关于c++的求质数问题,求高手指点一下,帮我改正一下,不胜感激!

2025-05-13 12:18:00
推荐回答(2个)
回答(1):

...怎么改正?代码呢?

给你个我写的吧。

#include
#include
#include
#include
#include
#include

int *su ;
int *temp ;

int main()
{

int op ;
int count ;
int t ;
int top=0 ;
int sqr ;
printf("输入所求质数的数量:(最好别超过五千万。。。太大了确实不好算)") ;
scanf("%d",&count) ;
if(count<=0)
{
printf("数字应该大于0\n\n按任意键结束") ;
getch() ;
return 0 ;
}
printf("\n正在计算。。。\n") ;
time_t time1=time(0) ;
long titi=clock() ;
su=new int [count] ;
t=count-1 ;
su[top]=2 ;
for(int i=3;;i+=2)
{
sqr=(int)sqrt((float)i) ;
if(sqr==sqrt((float)i))
continue ;
temp=su ;
op=0 ;
for(int j=0;j<=top;j++)
{
if(*temp>sqr)
{

break ;
}
if(i%(*temp)==0)
{
op=1 ;
break ;
}
temp++ ;

}
if(op==0)
{

su[++top]=i ;
}
if(top>=t)
break ;
}

FILE *fp ;
if((fp=fopen("D:\\质数.txt","w"))==0)
{
printf("文件操作失败") ;
exit(1) ;
}
temp=su ;
for(int k=0;k<=top;k++)
{

if(k%5==0)
fprintf(fp,"\n") ;
fprintf(fp,"%8d",*(temp++)) ;
}
fclose(fp) ;
delete su ;
su=temp=NULL ;

time_t time2=time(0) ;
double tt=difftime(time2,time1) ;
printf("\n%f\n",tt) ;
system("CLS") ;
printf("\n运行时间:%ld毫秒\n\n",clock()-titi) ;

printf("\n\n\n\n\n\n\n\t\t\t请到 D:\\\\质数.txt 查看答案\n\n\n\n\n\n\n") ;
system("PAUSE") ;
return 0 ;
}

回答(2):

nclude "iostream.h"
void main() //这两行没啥好说的
{
int i,j,index; //定义3个变量
for (i=2;i<=100;i++) //外循环,i指2到100之间的所有整数,i的初始值为2,一直到100共循环99次,循环结束时i+1
{
index=1; //先给index附值为1
for (j=2;j{
if(i % j==0) index=0;
}
if (index==1) cout<}
}
另外,团IDC网上有许多产品团购,便宜有口碑