判断i是否素数
是素数就打印出来
使用2~i-1之间的数字去试除i
1.未使用函数
int main()
{
int i = 0;
int count = 0;
for (i = 100; i <= 200; i++)
//口算可得100是合数,101是素数,
//所以这里的i可以从101开始
//由于偶数一定不是素数
//所以这里是i++可以替换成i+=2
{
int j = 0;
int bz = 1; //bz为1时表示的是素数
for (j = 2; j <= i - 1; j++)
//在这里可以优化代码,
//判断一个数字是否为素数不一定非要使用2~i-1之间的数字去试除i
//只需要把i开方,然后让j<=sqrt(i)
//这里因为除了1和它本身外
//它最大的素数就是开方之后的数字
//如果它是合数
//则它开方之后的数字前面必定有一个除了1之外的因数
//如果这个数字可以开方,那么这个数字也是合数
//所以在这里可以引入sqrt函数来优化代码
//sqrt函数的头文件是#include <stdio.h>
{
if (i % j == 0)
{
bz = 0;
break;
}
}
if (bz == 1)
{
count++;
printf("%d ", i);
}
}
printf("\ncount = %d", count);
//引入变量count,可以算出100~200中有多少个素数,
//但是要切记输出大括号的范围
//大括号太多时,一定要仔细分辨每个大括号的范围,
//在VS2019编译器中,分辨大括号最好的方法是竖着看
//一般情况下,竖着的两个左右括号是对齐的
return 0;
}
2.使用函数判断
如果是使用is_prime函数判断素数,则代码如下:
#include <stdio.h>
#include <math.h>
int is_prime(int x)
{
int j = 0;
for (j = 2; j <= sqrt(x); j++)
{
if (x % j == 0)
{
return 0;
}
}
return 1;
}
int main()
{
int i = 0;
int count = 0;
for (i = 101; i <= 200; i+=2)
{
if (is_prime(i))
{
printf("%d ", i);
count++;
}
}
printf("\ncount = %d", count);
return 0;
}