题目要求:
打印三位数中所有的素数
解析:
一个大于1的自然数,除了1和它自身外,不能整除其他自然数的数叫做质数.
能否整除其他自然数, 这点用到求模, 在区间内检索每个数用for, 用调用函数使解析思路更加清晰
#include<stdio.h>
#include<math.h>
int is_prime_number(int m);
int main(void)
{
printf("Prime number have:\n");
int j;
int wrap = 0,counter = 0; //每输出4个换行,counter计算区间内的个数
for(j = 100;j<=999;j++)
{
if(is_prime_number(j)) //若是素数 则返回1
{
printf("%d ",j);
wrap++;
counter++;
if(wrap == 5)
{
putchar('\n');
wrap = 0;
}
}
}
printf("\ncounter = %d",counter);
return 0;
}
int is_prime_number(int m)
{
int i,a = 0; //m为一个三位数,a为判断因子
int k=(int)sqrt(m); //求至到根号值 sqrt的库函数为math
for(i = 2;i<=k;i++) //因为开方且整型 所以得取到k
{
if(m % i == 0) //判断是否为素数
a++; //若除得尽则a+1;
}
if(a == 0 && m != 1) //循环结束 未执行if 则a必为0
return 1; //printf("%d is a prime\n",m);
else
return 0; //printf("%d isn't a prime\n",m);
}