输出所有小于等于n的素数

来源:百度知道 编辑:UC知道 时间:2024/05/06 07:45:54
要求每行10个素数
#include<stdio.h>
#include<math.h>
int prime(int x)
{
int i;
for(i=2;i<=(int)sqrt(x);i++)
if(x%i==0)
return 0;
return 1;
}
void main()
{
int n,i,j=0;
printf("n:");
scanf("%d",&n);
printf("小于等于%d的素数;\n",n);
if(n>2)
{printf("%4d",2);
j++;
}
for(i=3;i<=n;i+=2)
if(prime(i)==1)
{
printf("%4d",j);
if(j!=0&&++j%10==0)
printf("\n");
}
printf("\n");
}
这个有错误 帮忙改一下。。。

不建议你用这种for(i=2;i<=(int)sqrt(x);i++)条件写,这样已经省略了2.而且3在这里也不行啊!我自己写的一个。
int IsPrimeNumber(int n)
{
int i,flag=0;
if(n==1)
flag=0;
if(n==2)
flag=1;

else if(n>=3)
{
for(i=2;i<n;i++)
if(n%i==0)
break;
if(i==n)
flag=1;}
return flag;

}

if(prime(i)==1)
{
printf("%4d",i); //这一句输错了
if(j!=0&&++j%10==0)
printf("\n");
}

h