/**
* 【程序4】
* 题目:判断101-200之间有多少个素数,并输出所有素数。
* 程序分析:判断素数的方法:用一个数分别去除[2, sqrt(这个数)]之间的所有数,如果能被整除,
* 则表明此数不是素数,反之是素数。
*/
#include<stdio.h>
#include <math.h>
int main()
{
int n, i, k, flag = 1;
printf("101-200所有素数输出如下\n");
for (n=101;n<=200;n++)
{
// 求平方根,注意sqrt()的参数为double类型,这里要强制转换n的值
k = (int)sqrt((double)n);
for (i=2;i<=k;i++)
{
if (n%i==0)
{
flag = 0;
break;
}
}
if (flag == 1){
printf("%d\n", n);
}
flag = 1;
}
return 0;
}
/**
* 注:
* 素数:
* 素数又称质数。所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除。
*
* 思路1):因此判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数。
*
* 思路2):另外判断方法还可以简化。m 不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~ sqrt(这个数)之间的每一个整数去除就可以了。如果 m 不能被 2 ~ sqrt(这个数)间任一整数整除,m 必定是素数。例如判别 17 是是否为素数,只需使 17 被 2~4 之间的每一个整数去除,由于都不能整除,可以判定 17 是素数。
*
*/