2323 - Prim 001: Difference between revisions
Diana Butuza (talk | contribs) |
Paul Matei (talk | contribs) No edit summary |
||
Line 16: | Line 16: | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
def validare_date(n): | |||
def | |||
if not n.isdigit() or int(n) <= 0: | if not n.isdigit() or int(n) <= 0: | ||
return False | return False | ||
Line 24: | Line 23: | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
n = input("Introduceți un număr întreg pozitiv: ") | n = input("Introduceți un număr întreg pozitiv: ") | ||
if | if validare_date(n): | ||
print("\nDatele de intrare corespund restricțiilor impuse.\n") | print("\nDatele de intrare corespund restricțiilor impuse.\n") | ||
n = int(n) | n = int(n) | ||
Line 43: | Line 42: | ||
else: | else: | ||
print("Datele de intrare nu corespund restricțiilor impuse.") | print("Datele de intrare nu corespund restricțiilor impuse.") | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==Explicație rezolvare== | ==Explicație rezolvare== | ||
Acest cod verifică dacă datele de intrare sunt corecte și apoi calculează numărul de divizori proprii ai unui număr întreg dat prin parcurgerea tuturor divizorilor primi ai numărului și calcularea puterilor lor. În cele din urmă, se afișează numărul de divizori proprii '''modulo 59999'''. | |||
În |
Latest revision as of 11:50, 11 April 2023
Cerinţa[edit | edit source]
Se dă un număr natural n. Să se afle numărul divizorilor naturali ai lui n^n.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n.
Date de ieşire[edit | edit source]
Programul va afișa pe ecran numărul divizorilor lui n^n, modulo 59999.
Restricții și precizări[edit | edit source]
- 1 ≤ n ≤ 10^13
Exemplu[edit | edit source]
- Intrare
- 4
- Ieșire
- 9
Explicație[edit | edit source]
Numărul 4^4=256 are 9 divizori: 1,2,4,8,16,32,64,128,256.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line> def validare_date(n):
if not n.isdigit() or int(n) <= 0: return False return True
if __name__ == '__main__':
n = input("Introduceți un număr întreg pozitiv: ") if validare_date(n): print("\nDatele de intrare corespund restricțiilor impuse.\n") n = int(n) cnt, d = 1, 2 cn = n while n > 1: p = 0 while n % d == 0: n //= d p += 1 cnt *= (p * cn + 1) d += 1 if d * d > n: d = n while cnt >= 59999: cnt %= 59999 print(cnt % 59999) else: print("Datele de intrare nu corespund restricțiilor impuse.")
</syntaxhighlight>
Explicație rezolvare[edit | edit source]
Acest cod verifică dacă datele de intrare sunt corecte și apoi calculează numărul de divizori proprii ai unui număr întreg dat prin parcurgerea tuturor divizorilor primi ai numărului și calcularea puterilor lor. În cele din urmă, se afișează numărul de divizori proprii modulo 59999.