素数的问题(望高手帮忙)

来源:百度知道 编辑:UC知道 时间:2024/05/26 07:39:06
输出20到200之间的素数及这些素数的和,每行输出6个数。
这是我编写的:

#include<stdio.h>
#include<math.h>
void main()
{
int i,k,n,count=0,sum=0;
printf("素数有:\n");
for(n=20;n<201;n++)
{
k=sqrt(n);
for(i=2;i<=k;i++)
{
if(n%i==0);
break;
printf("%d ",n);
sum=sum+n;
count++;
if(count%6==0)
printf("\n");
}
}
printf("总和是:%d\n",sum);
}

不知道哪里错了,望高手指教....

给你改了一下
#include<stdio.h>
#include<math.h>
void main()
{
int i,k,n,count=0,sum=0;
printf("素数有:\n");
for(n=20;n<201;n++)
{
k=(int)sqrt(n); //k是int类型,这里要进行个强制转换
for(i=2;i<=k;i++)
{
if(n%i==0)
goto lop; //这里改了,若n%i==0则说明不是素数 要跳出第二个for语句
}
printf("%d ",n);
sum=sum+n;
count++;
if(count%6==0)
printf("\n");
lop:;
}
printf("总和是:%d\n",sum);
}

#include <stdio.h>
int IsPrime(int n)
{
int i,flag=0;
if(n<=1)
flag=0;
if(n==2)
flag=1;
else if(n>2)
{
for(i=2;i<n;i++)
if(n%i==0)
break;
if(i==n)
flag=1;

}
return flag;
}
void main()
{
int i,sum=0;
for(i=20;i<200;i++)