输出10000万以内的所有素数(也称质数),要求每行输出一个素数
我自己写的这样的
#include<stdio.h>
void main()
{
int a,b;
for(a=2;a<=10000;a++)
{
for(b=1;b<=2/a;b++)
{
if(a%b==0) break;
}
if (a%b!=0) printf("%d\n",a);
printf("\n");
}
}
哪里有问题啊??
输出10000万以内的所有素数(也称质数),要求每行输出一个素数
我自己写的这样的
#include<stdio.h>
void main()
{
int a,b;
for(a=2;a<=10000;a++)
{
for(b=1;b<=2/a;b++)
{
if(a%b==0) break;
}
if (a%b!=0) printf("%d\n",a);
printf("\n");
}
}
哪里有问题啊??
告诉你吧,,
错误:for(b=1;b<=2/a;b++) 应该改成 for(b=1;b<=a/2;b++)
首先你的程序算法就是有问题,判断素数的方法是这样:一个数除了能被1和它本身整除之外,不能被其他的数整除。。。
所以程序可以这样写:
#include <stdio.h>
#include <math.h> //调用C中库函数的头文件
void main()
{
int i,m,n,count=0;
for(m=2;m<=10000;m++)
{n=sqrt(m);
for(i=2;i<=n;i++)
if(m%i==0) break;
if(i>n)
{printf("%6d",m);
count++;
if(count%10==0) printf("\n"); //当一行满10个的时候就换行
}
}
printf("\n");
}
由于每行输出一个不好看结果,,我就调成了每行输出10个