Problema con sqrt()

di il
2 risposte

Problema con sqrt()

Sto scrivendo un semplice programma in C che mi dica se un numero è primo.
#include <stdio.h>
#include <math.h>

/*Is n prime?*/

main()
{
  int n, d, t;
  
  n=NUMBER;
  d=1;  
  t=1;
  
  while(d<sqrt(NUMBER)) {
  d=d+1;
    
    if(n%d==0)
    t=t*0;
    else
    t=t*1;
  }
  
  if (t==0)
  printf("%d is not prime\n", n);
  else
  printf("%d is prime\n", n);
  
}
Tutto funziona, ma sto cercando un modo per evitare di rimpiazzare NUMBER due volte (n=NUMBER e sqrt(NUMBER)). Se nell'argomento di sqrt() piazzo n mi da errore. Perché? Come si può evitare?

2 Risposte

  • Re: Problema con sqrt()

    Sinceramente a me funziona benissimo mettendo srqt(n)...
  • Re: Problema con sqrt()

    Ciao, devi compilare con il comando :

    cc -lm -o num_pri num_pri.c

    dove al posto di num_pri metti il nome del tuo sorgente C.
    L'opzione -lm serve per linkare la libreria matematica ( se non erro ).
    In questo modo funziona tutto... come vedi :

    #include <stdio.h>
    #include <math.h>

    /*Is n prime?*/

    main()
    {
    int n, d, t;

    n=3;
    d=1;
    t=1;

    while(d<sqrt(n)) {
    d=d+1;

    if(n%d==0)
    t=t*0;
    else
    t=t*1;
    }

    if (t==0)
    printf("%d is not prime\n", n);
    else
    printf("%d is prime\n", n);

    }

    Ciao
    Ste
Devi accedere o registrarti per scrivere nel forum
2 risposte