Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ho un esercizio che dice: dato un numero scrivere una funzione che controlla se il numero inserito è primo. poi utilizzando la funzione appena realizzata scrivere un programma che fato un numero intero visualizzi a video tutti i numeri primi minori o uguali a quello dato.
Il mio problema è la seconda parte cioè quella di stampare a video tutti i numeri primi minori o uguali a quello dato. Posto il codice che ho scritto fin'ora:
Codice sorgente - presumibilmente C++
#include<stdlib.h>
#include<stdio.h>
int primo(int n){
if(n/n & n/1)
{
printf("Il numero %d inserito e' primo \n",n);
}
else
printf("Il numero %d inserito non e' primo \n",n);
return n;
}
int verifica(int n){
int i;
for(i=1;i<n;i++)
{
if(n/n & n/1)
printf("i numeri primi fino al numero inserito sono: %d \n",i);
}
return n;
}
int main (){
int n,i;
printf("Calcolo numeri primi \n");
printf("Inserisci un numero: ");
scanf("%d",&n);
printf("",primo(n));
printf("",verifica(n));
system("pause");
return0;
}
Ultima modifica effettuata da wicca89 il 02/02/2009 alle 14:13
un numero si dice primo se è solo se è divisibile per 1 e per se stesso. Nel tuo algoritmo hai scritto, se non sbaglio:
Codice sorgente - presumibilmente Plain Text
if(n/n && n/1)
/*numero primo*/
4 non è un numero primo quindi, 4/4 è vero,e 4/1 è vero, risulta che 4 è primo.
Devi verificare se n non è divisibile prima per gli altri numeri primi:
Codice sorgente - presumibilmente C++
int primo(int n)
{
int i=2;
int num = n;
while(n>1)
{
while((n %i)==0)
{
n/=i;
}
i++;
}
if(--i == num)/* il numero è primo*/
return1;
return0;
}
non l'ho testata, dovrebbe funzionare...
Codice sorgente - presumibilmente C#
int main()
{
/* prendiamo come numero base 8*/
int i;
for(i=0;i<=8;i++)
{
if(primo(i))
printf("Il numero %d è primo", i);
}
return1;
}
dalla main chiami la funzione primo() e li passi i numeri che vanno da 0 a base(nel nostro caso 8).
Potrebbero esserci errori, perchè al momento non posso testare il codice.