0063 - Factorizare 1: Difference between revisions
Diana Butuza (talk | contribs) |
Paul Matei (talk | contribs) No edit summary |
||
(2 intermediate revisions by one other user not shown) | |||
Line 15: | Line 15: | ||
: 3 | : 3 | ||
== Explicație == | == Explicație == | ||
'''405 = 34 * 51'''. Astfel, factorul care apare la puterea cea mai mare este '''3''' | '''405 = 34 * 51'''. Astfel, factorul care apare la puterea cea mai mare este '''3'''. | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
def validare_date(n): | def validare_date(n): | ||
if n <= 1 or n >= | if n <= 1 or n >= 1000000000: | ||
return False | return False | ||
return True | return True | ||
Line 45: | Line 45: | ||
else: | else: | ||
factors[n] = 1 | factors[n] = 1 | ||
max_factor = 0 | max_factor = 0 | ||
Line 59: | Line 58: | ||
print("Datele de intrare nu corespund restricțiilor impuse.") | print("Datele de intrare nu corespund restricțiilor impuse.") | ||
</syntaxhighlight> | |||
==Explicație rezolvare== | ==Explicație rezolvare== | ||
Problema cere să scriem un program în Python care primește un număr natural n și determină factorul care apare în descompunerea în factori primi a lui n la puterea cea mai mare. Algoritmul constă în factorizarea în factori primi a lui n și stocarea acestora într-un dicționar, apoi determinarea factorului cu puterea cea mai mare prin parcurgerea dicționarului. Pentru a valida datele de intrare, am scris o funcție validare_date care verifică dacă numărul n se află în intervalul impus de restricții. Programul afișează mesaje corespunzătoare în funcție de validitatea datelor de intrare prin utilizarea instrucțiunii if __name__ == '__main__': | Problema cere să scriem un program în Python care primește un număr natural '''n''' și determină factorul care apare în descompunerea în factori primi a lui '''n''' la puterea cea mai mare. Algoritmul constă în factorizarea în factori primi a lui '''n''' și stocarea acestora într-un dicționar, apoi determinarea factorului cu puterea cea mai mare prin parcurgerea dicționarului. Pentru a valida datele de intrare, am scris o funcție '''validare_date''' care verifică dacă numărul '''n''' se află în intervalul impus de restricții. Programul afișează mesaje corespunzătoare în funcție de validitatea datelor de intrare prin utilizarea instrucțiunii '''if __name__ == '__main__'''': |
Latest revision as of 11:46, 11 April 2023
Cerinţa[edit | edit source]
Să se scrie un program care citeşte un număr natural n şi determină factorul care apare în descompunerea în factori primi a lui n la puterea cea mai mare.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n.
Date de ieşire[edit | edit source]
Programul afișează pe ecran numărul prim p, cu semnificaţia precizată.
Restricții și precizări[edit | edit source]
- 1 < n < 1.000.000.000
- dacă în descompunerea în factori primi a lui n apar mai mulţi factori la puterea maximă, se va afişa cel mai mare dintre ei
Exemplu[edit | edit source]
- Intrare
- 405
- Ieșire
- 3
Explicație[edit | edit source]
405 = 34 * 51. Astfel, factorul care apare la puterea cea mai mare este 3.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
def validare_date(n):
if n <= 1 or n >= 1000000000: return False return True
if __name__ == '__main__':
n = int(input("Introduceți numărul n: "))
if validare_date(n): factors = {} d = 2 while d*d <= n: while (n % d) == 0: if d in factors: factors[d] += 1 else: factors[d] = 1 n //= d d += 1 if n > 1: if n in factors: factors[n] += 1 else: factors[n] = 1 max_factor = 0 max_power = 0 for factor, power in factors.items(): if power > max_power: max_factor = factor max_power = power
print(f"Factorul cu puterea cea mai mare în descompunerea lui n este {max_factor}") print("\nDatele de intrare corespund restricțiilor impuse.\n") else: print("Datele de intrare nu corespund restricțiilor impuse.")
</syntaxhighlight>
Explicație rezolvare[edit | edit source]
Problema cere să scriem un program în Python care primește un număr natural n și determină factorul care apare în descompunerea în factori primi a lui n la puterea cea mai mare. Algoritmul constă în factorizarea în factori primi a lui n și stocarea acestora într-un dicționar, apoi determinarea factorului cu puterea cea mai mare prin parcurgerea dicționarului. Pentru a valida datele de intrare, am scris o funcție validare_date care verifică dacă numărul n se află în intervalul impus de restricții. Programul afișează mesaje corespunzătoare în funcție de validitatea datelor de intrare prin utilizarea instrucțiunii if __name__ == '__main__':