2247 - Nr Div
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>