素数判断及一定范围内素数查找,计数代码

一.素数的判断:

素数的定义:素数是指大于1的自然数,除了1和自己本身外,其他数都不是它的因数。

那么用计算机的语言,咱们可以像这样思考:

思路:

输入一个数i,分别用2到i-1去试除i

i被整除i不是素数
2~i-1之间没有数可以被i整除i是素数

按照这个思路咱们可以设计如下这个代码:

​
#include <stdio.h>

int main()
{
	int n = 0;
	int i = 0;
	int flog = 1;
	scanf("%d",&n);
	for (i = 2; i <= n - 1; i++)
	{
		int flog = 1;
		if (n % i == 0)
		{
			flog = 0;
			break;
		}
	}
		if (flog == 1)
			printf("是素数\n");
		else
			printf("不是素数\n");
	
	return 0;
}

​

但是我们不难发现,对于任意一个数n,判断它是不是素数,我们只需要用2~根号n分别对n进行试除(数学问题不做过多解释)

因此代码可以另写为:

​
​
​
#include <stdio.h>
#include <math.h>
int main()
{
	int n = 0;
	int i = 0;
	int flog = 1;
	scanf("%d",&n);
	for (i = 2; i <= sprt(n) ; i++)
	{
		int flog = 1;
		if (n % i == 0)
		{
			flog = 0;
			break;
		}
	}
		if (flog == 1)
		
			printf("是素数\n");
		else
			printf("不是素数\n");
	
	return 0;
}

​

这里特别注意,代码中用到sprt函数,因此头文件中应包含#include <math.h>

即只用把for循环中的 i <= n-1 改为 i <= sprt(n) 

以上就是素数的判断。

二.一定范围内素数的查找:

有第一个代码思路的基础,我们可以这样设计第二个代码:

先假设一段数字,列如100~200之间的素数的查找。

定义 int n ,运用for循环使得n从101增加到200。

再定义 int i ,使i从2增加到根号i。

分别用i去试除n,直到 n 模上 i 得到0,就可以判断n不是素数。

#include <stdio.h>

int main()
{
	int n = 0;
	for (n = 100; n <= 200; n++)
	{
		int i = 0;
		int flog = 1;
		for (i = 2; i <= n-1; i++)
		{
			if (n % i == 0)
				flog = 0;
			break;
		}
		if (flog == 1)
			printf("%d\n", n);
	}
	return 0;
}

同理,这里也可以把i的范围改写为 2~sprt(n) ,从而大大简化运算。

三.一定范围内素数个数的判断:

要判断一定范围内的素数的个数,我们定义素数的个数count=多少。

按照刚刚的思路,我们可以设计如下代码:

#include <stdio.h>

int main()
{
	int n = 0;
	int count = 0;
	for (n = 100; n <= 200; n++)
	{
		int flog = 1;
		int i = 0;
		for (i = 2; i <= n - 1; i++)
		{
			if (n % i == 0)
				flog = 0;
		}
		if (flog == 1)
			count++;
	}
	printf ("count=%d\n", count);

	return 0;
}

运行后便可以得到100到200之间的素数的个数。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值