解题思路:
对于素数的输出,我们可以简单地总他的定义入手,先回顾一遍素数(质数)的定义:对于一个不为1的正整数,如果他的因数只有1与这个书本身,那么我们称这个书为素数。通过定义我们可以很清晰地得出我们的第一个思路,用一个循环将所有大于一且小于这个数本身的正整数被这个数整除,如果不存在一个数使得整除的余数为0,那么该数为素数,即可输出。但对于素数的判断,我们存在一个数学上的二级结论,当一个数在大于一且小于等于这个数的算数平方根范围内未能找到因子时,该数为素数。通过此结论,我们可以引入math函数减少该算法的计算时间。
注意事项:
由于题目要求的输出格式需将素数的数量输出到第一行,所以我们无法通过一个简单的for循环先将素数总数先输出,那么换个思维,不妨将此输出分为两次输出,先第一个for循环将素数总数输出,第二个for循环再将素数输出。
参考代码:
#include<stdio.h>
#include<math.h>
int main()
{
int n,k,i,a;
a=0;
for(n=101;n<=200;n=n+2)
{
k=sqrt(n);
for(i=2;i<=k;i++)
if (n%i==0)
break;
if(i>=k+1)
a+=1;
}
printf("%d\n",a);
for(n=101;n<=200;n=n+2)
{
k=sqrt(n);
for(i=2;i<=k;i++)
if (n%i==0)
break;
if(i>=k+1)
printf("%d ",n);
}
return 0;
}
0.0分
3 人评分