wyj696 第一遍代码 加油!!
首先考虑到素数本身的定义:只能被 1 或本身 整除的整数,因此我们可以先将偶数排除。
其次考虑到给定的区间是(100,200)因此我们先假设一个局部变量 i 赋值101 并且在向200递进时我们可以以step为2进行压缩。
而我们需要计算机判断是不是素数就需要进行大量的循环整除操作,因此我用到了while 语句 除数是我们需要判断是否为素数的 i 而被整除数(定义为z) 。在进行循环整除时 被整除数z需要不断向i/2(赋值给了n , step等于2)靠近。原因:前面我们提到素数一定是奇数因此,我们可以将被整除数z的区间压缩为(3,n),step=2 可以保证z始终是一个奇数。
在进行循环整除的过程中我引入if语句 如果变量i整除z(赋值给p)的结果为0——p是i的一个因数即i不是素数,所以我们需要退出循环整除操作,因为进行循环整除操作的定义为z还在区间内,因此我们将n+3赋值给z(让z跳出区间,+3的原因之后会解释)。如果p在循环中一直等于1 ,那么i就是我们所求的素数,最终跳出循环
最后我们需要将i打印出来,因为跳出循环的情况有两种1 不是素数2是素数 为了找出我们所需的素数i 我们会发现 第一种情况下z=n+3 而第二种情况的z恒小于n+3(+3的原因),因此我们可以将n+3作为判断条件 ,引入if语句,最终判断并打印出真正素数,最后i=i+2,进入下一个数的判断。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int p = 0;
int i = 101;
int z = 3;
int n = 0;
while (i < 200)
{
n = i / 2;
while (z <= n)
{
p = i%z;
if (p == 0)
z = n + 3;
else
z = z + 2;
}
if (z<n+3)
printf("%d\n", i);
z = i % 2 + 2;
i = i + 2;
}
return 0;
}