PDA

View Full Version : [C++] Prime armi, Programma che verifichi se un numero è primo. Help!


M4rk90
11-11-2009, 09:06
Salve a tutti.. come da titolo sono alle prime armi con questo linguaggio...
Vorrei riuscire a creare un programma che verifichi se un numero è primo o no...

ecco il mio codice...che vi dico già da ora che è sbagliato:
#include <stdio.h>
#include <stdlib.h>

main()

{
int x, num, prim;
printf("\tNumeri primi.");
printf("\n\nSe vuoi verificare che un numero e' primo digita 1, \naltrimenti digita 2 se vuoi avere stampati \ni primi n numeri primi: ");
scanf("%d", &x);
while ((x!=1)&&(x!=2))
{
printf("Il comando da te inserito e' errato, digita nuovamente il comando: ");
scanf("%d", &x);
}
if (x==1)
{
printf("Inserisci il numero da verificare: ");
scanf("%d", &num);
if (num%2==0)
{printf("Il numero non e' primo.");}
else
for (int i=2; i<num;)
{
prim=num%i;
if (prim!=0)
{
printf("Il numero da te inserito e' primo.");
break;
}
else
i++;
}
}
printf("\n");
system("pause");
return 0;
}

Allure
11-11-2009, 09:54
Che problemi ti da di preciso? Intanto non dovrebbe esserci un valore di ritorno int per il main?

M4rk90
11-11-2009, 09:58
scusa ma non ho capito..

comunque il problema è che non incrementa i a 3 e quindi non controlla..diciamo che mi dice che tutti i numeri dispari sono primi...

Allure
11-11-2009, 10:15
scusa ma non ho capito..

comunque il problema è che non incrementa i a 3 e quindi non controlla..diciamo che mi dice che tutti i numeri dispari sono primi...

butto benzina sul fuoco... mi dice anche che 2 non è un numero primo :sofico:

M4rk90
11-11-2009, 10:30
sisi...li devo porre che se inserisco 2 mi dice automaticamente che è primo... quello lo risolvo con un semplice if+printf

M4rk90
11-11-2009, 11:20
nessuno sa aiutarmi??

fero86
11-11-2009, 11:51
includi <math.h> e cambia il for in questa maniera:

for (int i = 2; i <= (int)sqrt(num); i++)
{
if (num % i == 0)
{
printf("Il numero da te inserito NON e' primo.");
break;
}
}

wingman87
11-11-2009, 11:56
Comunque stai programmando praticamente in C (nel senso che non stai usando nessuna peculiarità del C++)

M4rk90
11-11-2009, 12:14
si lo sò... il compilatore è il dev c++

lupixslacky
11-11-2009, 15:47
Sono d'accordo stai programmando in C...
Un esempio:
printf e' di c
cout<< e' c++
Ma ci sono molte altre cose...
Poi se vuoi continua cosi' ma non parlare di c++ postando codice alla maniera di c.Senza offesa,il mio e' un consiglio.

wizard_at
13-11-2009, 12:39
includi <math.h> e cambia il for in questa maniera:

for (int i = 2; i <= (int)sqrt(num); i++)
{
if (num % i == 0)
{
printf("Il numero da te inserito NON e' primo.");
break;
}
}


quindi per vedere se e' primo ti basta fare :


int i;
for (i = 2; i <=sqrt(num); i++)
{
if (num % i == 0)
{
break;
}
}
if ( ! ( i <=sqrt(num) ) ) printf ( "primo!" ) ;