这个代码相对来说会比较繁琐,因为是让100从2除以2-99的数…
#define _CRT_SECURE_NO_WARNINGS 1
#include"stdio.h"
int main()
{
int i = 0;
int count = 0;//设定一个相加的存储变量
for (i = 100; i <= 200; i++)//求100-200内的素数
{
int j = 0;
int v = 1;//假设一个值,并设定素数为1,真
for (j = 2; j <= i-1; j++)//素数只能被1和它本身除开
{
if (i % j == 0)
{
v = 0;//素数的值是假
break;//跳出本次循环
}
}
if (v == 1)//如果素数的值是真,打印
{
printf("%d ", i);
count++;//将打印的数量相加起来
}
}
printf("\n素数的总和为:%d", count);
}
下面这个代码是简化版,与上面相比,计算的过程少了很多。
#define _CRT_SECURE_NO_WARNINGS 1
#include"stdio.h"
int main()
{
int i = 0;
int count = 0;//设定一个相加的存储变量
for (i = 101; i <= 200; i+=2)//在奇数里去寻找素数
{
int j = 0;
int v = 1;//假设一个值,并设定素数为1,真
for (j = 2; j <=sqrt(i); j++)//将i开平方
{//开平方,使得之前100求余从2-99变为从2-10
if (i % j == 0)
{
v = 0;//素数的值是假
break;//跳出本次循环
}
}
if (v == 1)//如果素数的值是真,打印
{
printf("%d ", i);
count++;//将打印的数量相加起来
}
}
printf("\n素数的总和为:%d", count);
}
如果J从 0 开始,那么在循环中会对每个数都进行一次判断,但因为任何数除以 0 都会报错,所以从 0 开始判断会导致运行错误。
如果J从 1 开始,那么在循环中 i % j 的结果会一直为 0,因为任何数除以 1 都能整除。这将导致所有的数都被判断为非素数。
所以,我们从 2 开始判断 i 能否被整除,避免了上述问题,并确保只在需要判断的范围内进行判断,提高了判断的效率。
希望以上的代码能帮到大家,谢谢!