统计10000以内的素数的个数
#include<stdio.h>int main()
{
int i,j,count=2;
for(i=5;i<=10000;i++)
{
for(j=2;j<=i/2;j++)
{
if(i%j==0)
break;
}
count++;
}
printf("10000以内共有%d个素数!",10000-count);
return 0;
}
运行结果一直是2,求大神解答
(正确答案是1229) #include<stdio.h>
int main()
{
int i,j,k=0;//i是2-10000待确认是否为素数的数,j表示i的因子,k表示素数的个数
for(i=2;i<10000;i++)
{
for(j=2;j*j<=i;j++)
{
if(i%j==0)//判断i是否能被1和本身以外的数整除,%表示求余
break;//break跳出第二个for循环
}
if(j*j>i)
{
printf("%d ",i);
k++;//每增加一个素数k就加1
if(k%10==0)//一行打印10个数之后换行
{
printf("\n");
}
}
}
} count++放if里面
#include<stdio.h>
int main()
{
int i,j,count=2;
for(i=5;i<=10000;i++)
{
for(j=2;j<=i/2;j++)
{
if(i%j==0)
{
count++;
break;
}
}
}
printf("10000以内共有%d个素数!",10000-count);
return 0;
}
本帖最后由 风过无痕1989 于 2020-10-24 17:48 编辑
依你的程序修改
#include<stdio.h>
int main()
{
int i,j,count=0;// i 是2-10000待确认是否为素数的数,j表示i的因子,count表示素数的个数
for(i=2;i<10000;i++)
{
for(j=2;j*j<=i;j++)
{
if(i%j==0)// 判断i是否能被1和本身以外的数整除,%表示求余
break;// break跳出第二个for循环
}
if(j*j>i)
{
count++;// 每增加一个素数count就加1
}
}
printf("\n");
printf("10000以内共有%d个素数!",count);
} 冰雪世界 发表于 2020-10-24 17:43
count++放if里面
#include
int main()
i % j == 0
这个判断得到的不是 “不是素数” 的个数吗?为什么count还要++呢 大神本人 发表于 2020-10-24 18:19
i % j == 0
这个判断得到的不是 “不是素数” 的个数吗?为什么count还要++呢
楼主的count表示的是“不是素数”,最后用10000-count来得到素数个数
页:
[1]