<?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=3354_-_Factori_3</id>
	<title>3354 - Factori 3 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3354_-_Factori_3"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3354_-_Factori_3&amp;action=history"/>
	<updated>2026-05-02T04:19:12Z</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=3354_-_Factori_3&amp;diff=4342&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 mare 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 n numere citite vor fi mai mici de...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3354_-_Factori_3&amp;diff=4342&amp;oldid=prev"/>
		<updated>2023-04-25T10:47:06Z</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 mare 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 n numere citite vor fi mai mici de...&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 mare 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 n 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;
&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;
:16&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 mare este &amp;#039;&amp;#039;&amp;#039;16&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;
def prm(n):&lt;br /&gt;
    d = 2&lt;br /&gt;
    cnt = 0&lt;br /&gt;
    while n &amp;gt; 1:&lt;br /&gt;
        if n % d == 0:&lt;br /&gt;
            cnt += 1&lt;br /&gt;
        while n % d == 0:&lt;br /&gt;
            n //= d&lt;br /&gt;
        d += 1&lt;br /&gt;
        if d * d &amp;gt; n:&lt;br /&gt;
            d = n&lt;br /&gt;
    return cnt&lt;br /&gt;
&lt;br /&gt;
def validare_date(input_str):&lt;br /&gt;
    try:&lt;br /&gt;
        n = int(input_str)&lt;br /&gt;
        if n &amp;lt;= 0:&lt;br /&gt;
            raise ValueError&lt;br /&gt;
        return n&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        print(&amp;quot;Datele de intrare nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        exit(1)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    input_str = input(&amp;quot;Introduceti numarul de date de intrare: &amp;quot;)&lt;br /&gt;
    n = validare_date(input_str)&lt;br /&gt;
&lt;br /&gt;
    nums = []&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        x = input(&amp;quot;Introduceti numarul {}: &amp;quot;.format(i + 1))&lt;br /&gt;
        nums.append(int(x))&lt;br /&gt;
&lt;br /&gt;
    maxi = 0&lt;br /&gt;
    for x in nums:&lt;br /&gt;
        if prm(x) == 1 and x &amp;gt; maxi:&lt;br /&gt;
            maxi = x&lt;br /&gt;
&lt;br /&gt;
    if maxi != 0:&lt;br /&gt;
        print(&amp;quot;Numarul maxim care indeplineste conditia este:&amp;quot;, maxi)&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;NU EXISTA&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Explicație rezolvare==&lt;br /&gt;
Acest program are ca scop găsirea celui mai mare număr dintr-un set de numere introduse de utilizator care are exact doi divizori (numere prime).&lt;br /&gt;
&lt;br /&gt;
Pentru a face acest lucru, programul folosește două funcții. Funcția &amp;#039;&amp;#039;&amp;#039;prm(n)&amp;#039;&amp;#039;&amp;#039; calculează numărul de divizori ai unui număr întreg pozitiv n. Funcția &amp;#039;&amp;#039;&amp;#039;validare_date(input_str)&amp;#039;&amp;#039;&amp;#039; verifică dacă datele de intrare introduse de utilizator sunt corecte.&lt;br /&gt;
&lt;br /&gt;
În funcția principală a programului, întâi se solicită numărul de date de intrare și se verifică utilizând funcția &amp;#039;&amp;#039;&amp;#039;validare_date(input_str)&amp;#039;&amp;#039;&amp;#039;. Apoi se solicită introducerea fiecărui număr în parte și se stochează într-o listă.&lt;br /&gt;
&lt;br /&gt;
În final, programul iterează prin lista de numere, determină numărul de divizori ai fiecărui număr și dacă acesta are exact doi divizori și este mai mare decât numerele anterioare verificate, îl atribuie variabilei maxi. Dacă niciun număr din listă nu îndeplinește condiția, se afișează &amp;#039;&amp;#039;&amp;#039;NU EXISTA&amp;#039;&amp;#039;&amp;#039;.&lt;/div&gt;</summary>
		<author><name>Paul Matei</name></author>
	</entry>
</feed>