<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3355_-_Factori_4</id>
	<title>3355 - Factori 4 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3355_-_Factori_4"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3355_-_Factori_4&amp;action=history"/>
	<updated>2026-05-01T06:38:44Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3355_-_Factori_4&amp;diff=4380&amp;oldid=prev</id>
		<title>Paul Matei: Pagină nouă: == Cerinţa == Se dau &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale. Determinați cel mai mic număr care are un singur factor prim. Dacă nu există niciun număr cu un singur factor prim se va afișa mesajul &#039;&#039;&#039;NU EXISTA&#039;&#039;&#039;. == Date de intrare == Programul citește de la tastatură numărul &#039;&#039;&#039;n&#039;&#039;&#039;, iar apoi &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale. == Date de ieşire == Programul va afișa pe ecran numărul cerut. == Restricții și precizări == *&#039;&#039;&#039;1 ≤ n ≤ 1000&#039;&#039;&#039; *cele &#039;&#039;&#039;n&#039;&#039;&#039; numere citite vor fi mai mi...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3355_-_Factori_4&amp;diff=4380&amp;oldid=prev"/>
		<updated>2023-04-25T11:07:10Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerinţa == Se dau &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale. Determinați cel mai mic număr care are un singur factor prim. Dacă nu există niciun număr cu un singur factor prim se va afișa mesajul &amp;#039;&amp;#039;&amp;#039;NU EXISTA&amp;#039;&amp;#039;&amp;#039;. == Date de intrare == Programul citește de la tastatură numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar apoi &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale. == Date de ieşire == Programul va afișa pe ecran numărul cerut. == Restricții și precizări == *&amp;#039;&amp;#039;&amp;#039;1 ≤ n ≤ 1000&amp;#039;&amp;#039;&amp;#039; *cele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere citite vor fi mai mi...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Se dau &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale. Determinați cel mai mic număr care are un singur factor prim. Dacă nu există niciun număr cu un singur factor prim se va afișa mesajul &amp;#039;&amp;#039;&amp;#039;NU EXISTA&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar apoi &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul va afișa pe ecran numărul cerut.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;1 ≤ n ≤ 1000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*cele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere citite vor fi mai mici decât &amp;#039;&amp;#039;&amp;#039;1.000.000.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
:5&lt;br /&gt;
12 9 16 4 20&lt;br /&gt;
; Ieșire&lt;br /&gt;
:4&lt;br /&gt;
==Explicație==&lt;br /&gt;
Dintre numere citite au un factor prim numerele &amp;#039;&amp;#039;&amp;#039;9 16 4&amp;#039;&amp;#039;&amp;#039;. Dintre acestea cel mai mic este &amp;#039;&amp;#039;&amp;#039;4&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, arr):&lt;br /&gt;
    if not isinstance(n, int) or n &amp;lt;= 0:&lt;br /&gt;
        return False&lt;br /&gt;
    if not isinstance(arr, list) or len(arr) != n or not all(isinstance(x, int) for x in arr):&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def ok(n):&lt;br /&gt;
    d, cnt = 2, 0&lt;br /&gt;
    while n &amp;gt; 1:&lt;br /&gt;
        p = 0&lt;br /&gt;
        while n % d == 0:&lt;br /&gt;
            n //= d&lt;br /&gt;
            p += 1&lt;br /&gt;
        if p:&lt;br /&gt;
            cnt += 1&lt;br /&gt;
        d += 1&lt;br /&gt;
        if d * d &amp;gt; n:&lt;br /&gt;
            d = n&lt;br /&gt;
    return cnt == 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    n = int(input(&amp;quot;Introduceti numarul de elemente din lista: &amp;quot;))&lt;br /&gt;
    arr = list(map(int, input(&amp;quot;Introduceti lista de numere: &amp;quot;).split()))&lt;br /&gt;
&lt;br /&gt;
    if validare_date(n, arr):&lt;br /&gt;
        mini = math.inf&lt;br /&gt;
        for x in arr:&lt;br /&gt;
            if ok(x) and x &amp;lt; mini:&lt;br /&gt;
                mini = x&lt;br /&gt;
        if mini &amp;lt; math.inf:&lt;br /&gt;
            print(&amp;quot;Cel mai mic număr prim putere din listă este:&amp;quot;, mini)&lt;br /&gt;
        else:&lt;br /&gt;
            print(&amp;quot;Nu există niciun număr prim putere în listă.&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicație rezolvare==&lt;br /&gt;
Acest cod primește o listă de numere întregi și găsește cel mai mic număr din listă care este un număr prim putere.&lt;br /&gt;
&lt;br /&gt;
Pentru a verifica dacă un număr este un număr prim putere, se calculează factorii primi ai numărului și se numără câți factori primi diferiți are. Dacă numărul de factori primi diferiți este 1, atunci numărul este o putere a unui număr prim.&lt;br /&gt;
&lt;br /&gt;
Codul începe prin a citi numărul de elemente din listă și lista însăși, utilizând funcția &amp;#039;&amp;#039;&amp;#039;input() și list()&amp;#039;&amp;#039;&amp;#039;. Apoi, se validează datele de intrare cu funcția &amp;#039;&amp;#039;&amp;#039;validare_date()&amp;#039;&amp;#039;&amp;#039;, care verifică că n este un număr întreg pozitiv și că lista conține n numere întregi.&lt;br /&gt;
&lt;br /&gt;
După validarea datelor de intrare, se inițializează variabila &amp;#039;&amp;#039;&amp;#039;mini&amp;#039;&amp;#039;&amp;#039; cu o valoare foarte mare. Se parcurge lista cu un &amp;#039;&amp;#039;&amp;#039;for loop&amp;#039;&amp;#039;&amp;#039;, și pentru fiecare element se verifică dacă este un număr prim putere cu ajutorul funcției &amp;#039;&amp;#039;&amp;#039;ok()&amp;#039;&amp;#039;&amp;#039;. Dacă numărul este un număr prim putere și este mai mic decât valoarea actuală a lui &amp;#039;&amp;#039;&amp;#039;mini&amp;#039;&amp;#039;&amp;#039;, atunci acesta devine noul mini.&lt;br /&gt;
&lt;br /&gt;
La final, se verifică dacă &amp;#039;&amp;#039;&amp;#039;mini&amp;#039;&amp;#039;&amp;#039; a fost actualizat. Dacă da, atunci se afișează cel mai mic număr prim putere din listă, altfel se afișează un mesaj de eroare.&lt;/div&gt;</summary>
		<author><name>Paul Matei</name></author>
	</entry>
</feed>