nikaldo
13-10-2009, 23:34
In internet ho trovato questo codice sorgente in C++ per la ricerca di numeri primi , ma provandolo sul compilatore C++ 6 della Microsoft
mi segnala un errore di cui non riesco a trovare la soluzione, sperando che qualcuno possa aiutarmi ringrazio in anticipo.
_>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#include <iostream>
#include <cmath>
using namespace std;
void numeri_primi(int max)
{
int k=(int)(max/trunc(log(max))); /* usa la stima di Gauss sul numero dei numeri primi, valido per max che entra in una variabile */
int i, j , pasI=2;
int *dp=new int[k];
int *m=new int[k];
int massimo=1,prova;
dp[0]=5;
m[0]=25;
if (max >=2){
cout<<2<<endl;
}
if (max >=3){
cout<<3<<endl;
}
if (max >=5){
cout<<5<<endl;
}
for(i=7; i<max ;i+=(pasI=6-pasI)) // evita i multipli di 3
{
/* cerca i divisori tra i primi già trovati fino a sqrt(i) */
for(prova = dp[j=0]; (i%m[j]) && prova*prova < i; prova=dp[++j])
{
if(i>m[j])
m[j]+= 2*prova;
}
if(i!=m[j])
{
cout<<i<<endl;
dp[massimo]=i;
m[massimo++]=i*i;
}
}
delete dp;
delete m;
}
int main(void)
{
int i;
cout<<"Introdurre il numero Max : "<<endl;
cin>>i;
numeri_primi(i);
}
____________________________________________________________________________________________________________________________
Compiling...
Numeriprimi.cpp
c:\n_prime\numeriprimi.cpp(7) : error C2065: 'trunc' : undeclared identifier
c:\n_prime\numeriprimi.cpp(53) : warning C4508: 'main' : function should return a value; 'void' return type assumed
Error executing cl.exe.
N_prime.exe - 1 error(s), 1 warning(s)
mi segnala un errore di cui non riesco a trovare la soluzione, sperando che qualcuno possa aiutarmi ringrazio in anticipo.
_>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#include <iostream>
#include <cmath>
using namespace std;
void numeri_primi(int max)
{
int k=(int)(max/trunc(log(max))); /* usa la stima di Gauss sul numero dei numeri primi, valido per max che entra in una variabile */
int i, j , pasI=2;
int *dp=new int[k];
int *m=new int[k];
int massimo=1,prova;
dp[0]=5;
m[0]=25;
if (max >=2){
cout<<2<<endl;
}
if (max >=3){
cout<<3<<endl;
}
if (max >=5){
cout<<5<<endl;
}
for(i=7; i<max ;i+=(pasI=6-pasI)) // evita i multipli di 3
{
/* cerca i divisori tra i primi già trovati fino a sqrt(i) */
for(prova = dp[j=0]; (i%m[j]) && prova*prova < i; prova=dp[++j])
{
if(i>m[j])
m[j]+= 2*prova;
}
if(i!=m[j])
{
cout<<i<<endl;
dp[massimo]=i;
m[massimo++]=i*i;
}
}
delete dp;
delete m;
}
int main(void)
{
int i;
cout<<"Introdurre il numero Max : "<<endl;
cin>>i;
numeri_primi(i);
}
____________________________________________________________________________________________________________________________
Compiling...
Numeriprimi.cpp
c:\n_prime\numeriprimi.cpp(7) : error C2065: 'trunc' : undeclared identifier
c:\n_prime\numeriprimi.cpp(53) : warning C4508: 'main' : function should return a value; 'void' return type assumed
Error executing cl.exe.
N_prime.exe - 1 error(s), 1 warning(s)