I NUMERI PRIMI CIRCOLARI

I NUMERI PRIMI CIRCOLARI

Digital

28/09/2017 Release by Formati e Occupati

In Sintesi

I numeri primi circolari e la loro importanza nella crittografia

La notizia

<div style=’text-align:justify’><span style="font-size: 12pt;" data-mce-style="font-size: 14pt; color: #808080;">
Dopo aver considerato i numeri primi, passiamo ora a qualcosa di più intrigante ossia i numeri primi circolari.
Si tratta di numeri che rimangono primi a ogni rotazione ciclica delle cifre che li compongono, le quali a loro volta possono essere solamente 1, 3, 7 e 9.
Per spiegare meglio, si consideri il numero 9311.
Ruotando le cifre in senso orario, si ottengono 1931 - 1193 - 3119 e 9311
Una volta verificato che tutti i numeri ottenuti sono primi, si può concludere che 9311 è un primo circolare.
La più piccola tra le cifre ottenute (1193) si definisce primeval e ora proviamo a scrivere un programma che calcoli le successive:

</div>
<div style="width:90%;border:2px solid black;padding:20px;box-shadow: 8px 10px 12px -4px rgba(0,0,0,0.65);border: 9px double #000000;border-radius: 5px 5px 5px 5px;background-color:#B0C2B3;margin-left:5%;margin-right:5%;">
<code style="color:#FFE719;font-size:12px;background-color:inherit">

package test;

public class Problema35
{
             static int ruota(int n)
            {
                       String nu = n+"";
                       String ris = nu.charAt(nu.length()-1)+"";
                       for(int i=0;i<nu.length()-1;i++)
                                         ris += nu.charAt(i)+"";

                       return Integer.parseInt(ris);
           }

            static boolean contienePari(int n)
          {
                       boolean ris = false;
                       String [] numero = (n+"").split("");
                       for(String a:numero)
                      {

                                if(Integer.parseInt(a)%2==0)
                               {

                                              ris = false;
                                              break;

                              }

                     }
                      return ris;

         }

         static boolean primo(int n)
        {

                   boolean ris = true;
                   if(n%2==0)
                                   return false;
                  if(n!=1 && n!=2)
                                   for(int i=3;i<n;i+=2)
                                  {

                                               if(n%i==0)
                                              {
                                                              ris = false;
                                                              break;
                                               }
                                  }
                return ris;
        }

        public static void main(String[] args)
       {

        // The number, 197, is called a circular prime because all rotations of the digits:
        // 197, 971, and 719, are themselves prime.
        // There are thirteen such primes below 100: 2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73, 79, and 97.
        // How many circular primes are there below one million?
        for(int i=3; i<1000000; i+=2)
       {
                   int t = i;
                   boolean stamp = true;
                   if(primo(t) && !contienePari(t))
                   {
                               for(int k=1; k<(i+"").length();k++)
                              {
                                           t = ruota(t);
                                           if(!primo(t))
                                                       stamp = false;
                               }
                    }
                     else
                    {
                                stamp = false;
                    }
                     if(stamp)
                                  System.out.println(i);
                    }
         }
}

</code>
</div>


<div style=’text-align:justify’><span style="font-size: 14pt;color: #0D97FF;" data-mce-style="font-size: 14pt; color: #808080;">NUMERI PRIMI E SICUREZZA INFORMATICA</div>
<div style=’text-align:justify’><span style="font-size: 12pt;" data-mce-style="font-size: 14pt; color: #808080;">

I numeri primi sono molto utilizzati in campo di sicurezza informatica per determinare ad esempio il PIN delle carte di credito o la PASSWORD della posta elettronica.
La crittografia infatti utilizza algoritmi di protezione che cifrano i dati come il famoso RSA, che basa le chiavi proprio sui numeri primi.
Più grandi saranno questi ultimi, maggiore sarà la robustezza e l’inviolabilità della cifratura.
Appare dunque ovvio, a questo punto, l’interesse della matematica applicata che, negli ultimi anni è riuscita addirittura a scovare numeri primi troppo grandi per essere integrati nell’algoritmo.
In ogni caso, esistono altre branche in grado di sistemare queste nuove scoperte ma nel frattempo, noi ci vediamo domani alle 13 per il Debug Friday di questa settimana!
</div>
<hr style="border-color: grey; height:10px;">
Se ti è piaciuto l’articolo, metti un mi piace e condividilo
Se ne vuoi altri, visita il nostro blog
Per non perdere le nostre rubriche sul mondo del #lavoro, #digital e #IT, continua a seguirci su Linkedin e Facebook



Allegati:

ANT srl - Formati e Occupati news


23/10/2017

SOLUZIONE al #DEBUGFRIDAY del 20 Ottobre

Soluzione al Debug Friday del 20 Ottobre

23/10/2017

UNIVERSITÀ E LAVORO NELL'ERA DIGITALE

Università e lavoro nell’era digitale; come creare opportunità professionali per il futuro

20/10/2017

DEBUG FRIDAY DEL 20 OTTOBRE

Debug Friday del 20 Ottobre