PDA

Visualizza la versione completa : [C] Aiuto numeri primi!


spyro329
10-10-2008, 08:25
Salve ragazzi non riesco a capire come devo fare questo programma. Potete correggermi la mia soluzione?
Vi ringrazio.

E' una funzione.


char numero_primo(int numero)
{
int i;
If (numero == 0)
{return(printf("Il numero non primo");
}
else { if (numero==1) || (numero==2)
{return(printf("Il numero primo");}}
else {
for (i=2,i<=numero-1;i++)
{ if (numero % i)==0
{return(prinft("Il numero non primo");
break;}
else
{return(printf("Il numero primo"):
}
}
}

LeleFT
10-10-2008, 08:33
Quando posti il codice, inseriscilo all'interno dei tag
e , come richiesto dal regolamento.

PS: 1 non un numero primo. Ciascun numero primo ha esattamente 2 divisori (1 e se stesso). Il numero 1 ha un solo divosore (se stesso, vedi anche qui (http://it.wikipedia.org/wiki/Numero_primo#Primalit.C3.A0_di_0_e_di_1)) e la sua inclusione nell'insieme dei numeri primi violerebbe il Teorema Fondamentale dell'Aritmetica (http://it.wikipedia.org/wiki/Teorema_fondamentale_dell%27aritmetica).


Ciao. :ciauz:

spyro329
10-10-2008, 08:42
Potete aiutarmi? :)

XWolverineX
10-10-2008, 08:52
Cosa non va nell'algoritmo?

sotoli
10-10-2008, 09:15
PS: 1 non un numero primo.

Esatto...poi mi sembra di ricordare che la funzione printf ritorni un intero che rappresenta il numero di caratteri stampati e non un char. C' anche una parentesi } in meno.
La condizione if (numero % i)==0 non va bene, devi scriverla cos: if ((numero % i)==0).

Secondo me una soluzione potrebbe essere questa:



void numero_primo(int numero)
{
int i;
switch(numero)
{
case 1:
printf("Il numero non e' primo!");
return;
case 2:
printf("Il numero e' primo!");
return;
default:
for(i=2; i<numero-1; i++)
{
if((numero % i) == 0)
{
printf("Il numero non e' primo!");
return;
}
}
printf("Il numero e' primo!");
}
}

spyro329
10-10-2008, 10:23
Originariamente inviato da sotoli
Esatto...poi mi sembra di ricordare che la funzione printf ritorni un intero che rappresenta il numero di caratteri stampati e non un char. C' anche una parentesi } in meno.
La condizione if (numero % i)==0 non va bene, devi scriverla cos: if ((numero % i)==0).

Secondo me una soluzione potrebbe essere questa:



void numero_primo(int numero)
{
int i;
switch(numero)
{
case 1:
printf("Il numero non e' primo!");
return;
case 2:
printf("Il numero e' primo!");
return;
default:
for(i=2; i<numero-1; i++)
{
if((numero % i) == 0)
{
printf("Il numero non e' primo!");
return;
}
}
printf("Il numero e' primo!");
}
}

Non ho capito bene come funziona lo switch! :S

LeleFT
10-10-2008, 11:21
Il costrutto switch come una if a scelta multipla:


if (valore == 0) {
condizione1();
} else {
if (valore == 1) {
condizione2();
} else {
if (valore == 2) {
condizione3();
} else {
condizione4();
}
}
}

Si traduce, pi agevolmente cos:


switch( valore ) {
case 0: condizione1(); break;
case 1: condizione2(); break;
case 2: condizione3(); break;
default: condizione4(); break;
}

Funziona solo con valori numerici interi (quindi, int e char).


Ciao. :ciauz:

Loading