3081 - Truncatable Left

From Bitnami MediaWiki
Revision as of 18:05, 19 March 2023 by Diana Butuza (talk | contribs)

Cerinţa

Un număr prim se numește trunchiabil-stânga dacă, prin eliminare repetată a primei cifre, toate numerele rezultate sunt prime. Se dă un număr natural, să se verifice dacă numărul este prim trunchiabil-stânga.

Date de intrare

Programul citește un număr natural nenul n.

Date de ieşire

Programul va afișa DA dacă n este prim trunchiabil-stânga, altfel va afișa NU.

Restricții și precizări

  • n este mai mic decât 1.000.000.
  • Cel mai mare prim trunchiabil-stânga este 357686312646216567629137.

Exemplu 1:

Exemplu

Intrare
1223
Ieșire
Datele de intrare corespund restricțiilor impuse.
DA

Explicație

Exemplu 1: 1223 e prim. Eliminăm 1, 223 e prim. Eliminăm 2, 23 e prim. Eliminăm 2, 3 e prim. Deci, numărul 1223 e prim trunchiabil-stânga.

Rezolvare

<syntaxhighlight lang="python" line> def validare_date(numar):

   flag = False
   if numar.isdigit():
       if 0 <= int(numar) <= 1_000_000_000:
           flag = True
   return flag

def is_prime(numar):

   if numar < 2:
       return False
   for i in range(2, int(numar**0.5) + 1):
       if numar % i == 0:
           return False
   return True

def is_left_truncatable_prime(numar):

   while numar > 0:
       if not is_prime(numar):
           return False
       numar = numar % (10 ** (len(str(numar))-1))
   return True

if __name__ == '__main__':

   numar = input("Introduceti un numar natural: ")
   if validare_date(numar):
       print("\nDatele de intrare corespund restricțiilor impuse.\n")
       numar = int(numar)
       if is_left_truncatable_prime(numar):
           print("DA")
       else:
           print("NU")
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")


</syntaxhighlight>