求100~200之间的素数

wyj696   第一遍代码   加油!!

 首先考虑到素数本身的定义:只能被 1 或本身 整除的整数,因此我们可以先将偶数排除。

 其次考虑到给定的区间是(100,200)因此我们先假设一个局部变量 i 赋值101 并且在向200递进时我们可以以step为2进行压缩。

而我们需要计算机判断是不是素数就需要进行大量的循环整除操作,因此我用到了while 语句 除数是我们需要判断是否为素数的 被整除数(定义为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;
}

​

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值