<?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=2608_-_Bi_Prime</id>
	<title>2608 - Bi Prime - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=2608_-_Bi_Prime"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2608_-_Bi_Prime&amp;action=history"/>
	<updated>2026-05-01T06:48:06Z</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=2608_-_Bi_Prime&amp;diff=5395&amp;oldid=prev</id>
		<title>Paul Matei: Pagină nouă: == Cerinţa == Se dă &#039;&#039;&#039;n&#039;&#039;&#039; un număr natural care este produsul a două numere prime distincte, şi &#039;&#039;&#039;m&#039;&#039;&#039; reprezentând numărul numerelor mai mici sau egale cu &#039;&#039;&#039;n&#039;&#039;&#039;, prime cu &#039;&#039;&#039;n&#039;&#039;&#039;. Aflaţi cele două numere prime din descompunerea lui &#039;&#039;&#039;n&#039;&#039;&#039;. == Date de intrare == Programul citește de la tastatură numerele &#039;&#039;&#039;n&#039;&#039;&#039; şi &#039;&#039;&#039;m&#039;&#039;&#039;. == Date de ieşire == Programul va afișa pe ecran numerele prime din descompunerea lui &#039;&#039;&#039;n&#039;&#039;&#039;, în ordine crescătoare, separate prin...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2608_-_Bi_Prime&amp;diff=5395&amp;oldid=prev"/>
		<updated>2023-04-29T11:33:46Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerinţa == Se dă &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; un număr natural care este produsul a două numere prime distincte, şi &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; reprezentând numărul numerelor mai mici sau egale cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, prime cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;. Aflaţi cele două numere prime din descompunerea lui &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;. == Date de intrare == Programul citește de la tastatură numerele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; şi &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039;. == Date de ieşire == Programul va afișa pe ecran numerele prime din descompunerea lui &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, în ordine crescătoare, separate prin...&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 dă &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; un număr natural care este produsul a două numere prime distincte, şi &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; reprezentând numărul numerelor mai mici sau egale cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, prime cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;. Aflaţi cele două numere prime din descompunerea lui &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Programul citește de la tastatură numerele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; şi &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
Programul va afișa pe ecran numerele prime din descompunerea lui &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, în ordine crescătoare, separate prin spaţiu.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;1 ≤ m ≤ n ≤ 10*25&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; Intrare&lt;br /&gt;
:8777 8580&lt;br /&gt;
; Ieșire&lt;br /&gt;
:67 131&lt;br /&gt;
== Explicație == &lt;br /&gt;
Avem &amp;#039;&amp;#039;&amp;#039;8777=67•131&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;
# functie pentru a calcula cel mai mare divizor comun&lt;br /&gt;
def cmmdc(a, b):&lt;br /&gt;
    if b == 0:&lt;br /&gt;
        return a&lt;br /&gt;
    return cmmdc(b, a % b)&lt;br /&gt;
&lt;br /&gt;
# functie pentru a determina un factor al lui n folosind metoda lui Pollard-Rho&lt;br /&gt;
def pollard_rho(n):&lt;br /&gt;
    x = 2&lt;br /&gt;
    y = 2&lt;br /&gt;
    d = 1&lt;br /&gt;
    while d == 1:&lt;br /&gt;
        x = (x * x + 1) % n&lt;br /&gt;
        y = (y * y + 1) % n&lt;br /&gt;
        y = (y * y + 1) % n&lt;br /&gt;
        d = cmmdc(abs(x - y), n)&lt;br /&gt;
    return d&lt;br /&gt;
&lt;br /&gt;
# functie pentru a valida datele de intrare&lt;br /&gt;
def validare_date(n, m):&lt;br /&gt;
    if n &amp;lt; 1 or m &amp;lt; 1 or n &amp;gt; 10**25 or m &amp;gt; n:&lt;br /&gt;
        return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    # citim numerele n si m de la tastatura&lt;br /&gt;
    n, m = map(int, input().split())&lt;br /&gt;
&lt;br /&gt;
    # validam datele de intrare&lt;br /&gt;
    if validare_date(n, m):&lt;br /&gt;
        # factorizam n folosind metoda lui Pollard-Rho&lt;br /&gt;
        factor1 = pollard_rho(n)&lt;br /&gt;
        factor2 = n // factor1&lt;br /&gt;
&lt;br /&gt;
        # calculam numarul de numere prime mai mici sau egale cu n, prime cu n&lt;br /&gt;
        phi = (factor1 - 1) * (factor2 - 1)&lt;br /&gt;
&lt;br /&gt;
        # afisam cei doi factori primi ai lui n in ordine crescatoare&lt;br /&gt;
        print(min(factor1, factor2), max(factor1, factor2))&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Paul Matei</name></author>
	</entry>
</feed>