2247 - Nr Div: Difference between revisions
Cristina94 (talk | contribs) Pagină nouă: ==Enunț== Se consideră un număr natural N care este par. ==Cerința== Să se determine cel mai mic număr natural impar M care are același număr de divizori ca și N. ==Date de intrare== Programul citește de la tastatură numărul N. ==Date de ieșire== Programul va afișa pe ecran cel mai mic număr natural impar M care are același număr de divizori ca și N. ==Restricții și precizări== *1 ≤ N ≤ 1 000 000 000 și este par *Se garantează că M va fi mai mi... |
Cristina94 (talk | contribs) No edit summary |
||
Line 39: | Line 39: | ||
==Rezolvare== | ==Rezolvare== | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line="1"> | ||
#2247 NrDiv | #2247 NrDiv | ||
def numar_divizori(n): | def numar_divizori(n): | ||
Line 55: | Line 55: | ||
return M | return M | ||
while True: | def main(): | ||
while True: | |||
try: | |||
# Citirea unui numar de la tastatura | |||
N = int(input("Introdu un numar par 'N': ")) | |||
# Verifica daca numarul este par si indeplineste restrictiile | |||
if 1 <= N <= 1000000000 and N % 2 == 0: | |||
# Calculare numar divizori | |||
numar_divizori_N = numar_divizori(N) | |||
print(f"Numarul {N} are {numar_divizori_N} divizori.") | |||
# Cautarea unui numar impar cu acelasi numar de divizori | |||
M = gaseste_numar_impar_cu_divizori_egal(N) | |||
print(f"Am gasit un numar impar {M} cu acelasi numar de divizori.") | |||
break | |||
else: | |||
print("Numarul introdus nu este par sau nu respecta restrictiile. Te rog sa reintroduci un numar valid.") | |||
except ValueError: | |||
print("Te rog sa introduci un numar intreg valid.") | |||
if __name__ == "__main__": | |||
main() | |||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 17:38, 5 February 2024
Enunț[edit | edit source]
Se consideră un număr natural N care este par.
Cerința[edit | edit source]
Să se determine cel mai mic număr natural impar M care are același număr de divizori ca și 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 cel mai mic număr natural impar M care are același număr de divizori ca și N.
Restricții și precizări[edit | edit source]
- 1 ≤ N ≤ 1 000 000 000 și este par
- Se garantează că M va fi mai mic decât 2 000 000 000
Exemplu 1[edit | edit source]
- Intrare
- 360
- Iesire
- Numarul 360 are 24 divizori.
- Am gasit un numar impar 3465 cu acelasi numar de divizori.
Exemplu 2[edit | edit source]
- Intrare
- 3465
- Iesire
- Numarul introdus nu este par sau nu respecta restrictiile. Te rog sa reintroduci un numar valid.
Exemplu 3[edit | edit source]
- Intrare
- 1024
- Iesire
- Numarul 1024 are 11 divizori.
- Am gasit un numar impar 59049 cu acelasi numar de divizori.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1">
- 2247 NrDiv
def numar_divizori(n):
count = 0 for i in range(1, n + 1): if n % i == 0: count += 1 return count
def gaseste_numar_impar_cu_divizori_egal(numar_par):
numar_divizori_par = numar_divizori(numar_par) for M in range(1, 1000000000, 2): # cautam numere impare if numar_divizori(M) == numar_divizori_par: return M
def main():
while True: try: # Citirea unui numar de la tastatura N = int(input("Introdu un numar par 'N': "))
# Verifica daca numarul este par si indeplineste restrictiile if 1 <= N <= 1000000000 and N % 2 == 0: # Calculare numar divizori numar_divizori_N = numar_divizori(N) print(f"Numarul {N} are {numar_divizori_N} divizori.")
# Cautarea unui numar impar cu acelasi numar de divizori M = gaseste_numar_impar_cu_divizori_egal(N) print(f"Am gasit un numar impar {M} cu acelasi numar de divizori.") break else: print("Numarul introdus nu este par sau nu respecta restrictiile. Te rog sa reintroduci un numar valid.") except ValueError: print("Te rog sa introduci un numar intreg valid.")
if __name__ == "__main__":
main()
</syntaxhighlight>