Verificare se un numero della serie di fibonacci è primo

di il
1 risposte

Verificare se un numero della serie di fibonacci è primo

Buon pomeriggio,

il mio codice dovrebbe in primo luogo calcolare i primi 1000 numeri della serie di fibonacci e in seguito stampare solo quelli primi.

il codice che ho scritto è questo:
  float a=0,b=1,div=0;
  boolean ind =true;

    for (int i=0;i<1000;i++){
      for (int k=1; i<=a;++k)
      {
          if(k<=a)
              ind=true;
          else
          div = a%k;
          if(div ==0)
          {
              ind=false;
          }
      }
      if(ind==true)
      {System.out.println(a);}
      a=a+b;
      b=a-b;
    }
mi sapete dire dove sbaglio?

1 Risposte

  • Re: Verificare se un numero della serie di fibonacci è primo

    Ciao, allora il problema veniva a verificarsi perché ne tuo codice avevi messo al secondo ciclo <=a e cmq non avevi fatto incrementare a, di conseguenza la variabile k era maggiore visto che l' avevi inizializzata ad 1. poi devi cambiare di po di variabile la float dopo tot volte provoca la stampa di Nan ossia infinito,perché e troppo piccola come supporto numerico dovresti usare un int o una double per i numeri a virgola mobile.

    questo e il tuo codice(ps: ho evidenziato gli errori con ""):
      "float" "a=0",b=1,div=0;
      boolean ind =true;
    
        for (int i=0;i<1000;i++){
          for (int k=1; "i<=a";++k)
          {"a"
              if(k<=a)
                  ind=true;
              else
              div = a%k;
              if(div ==0)
              {
                  ind=false;
              }
          }
          if(ind==true)
          {System.out.println(a);}
          a=a+b;
          b=a-b;
        }
    questo è il codice corretto:
     
    int a=1,b=1,div=0;
      boolean ind =true;
     for (int i=0;i<1000;i++){
          for (int k=1; i>=a;++k)
          {a
              if(k<=a)
                  ind=true;
              else
              div = a%k;
              if(div ==0)
              {
                  ind=false;
              }
          }
          if(ind==true)
          {System.out.println(a);}
          a=a+b;
          b=a-b;
        }
    se hai dei dubbi chiedi pure.
Devi accedere o registrarti per scrivere nel forum
1 risposte