c语言——素数问题

本文介绍了素数的概念,提供了一个简单的C语言程序来判断一个数是否为素数,并展示了如何找出指定范围内所有素数的方法。通过利用素数只能被1和自身整除的性质,优化了算法效率。最后,作者邀请读者分享更多关于素数问题的解法,并欢迎指正错误。
摘要由CSDN通过智能技术生成

素数问题

素数是什么?

素数 (Prime number,又称质数),指在大于1 的 自然数中,除了1和该数自身外,无法被其他自然数整除 的 数(也可定义为只有1与该数本身两个正因数 的 数)。 大于1 的 自然数若不是 素数 ,则称之为合数(也称为合成数)。

代码实现

1.素数判断

#include <stdio.h>

int main() 
{
	int n;
	scanf("%d", &n);
 
	int m = 0;
	for (int i = 2; i < n; i++ ) 
	{
		if(n % i  == 0) //代表这个数会被除1和他本身意外的数整除
		{
			m = 1;
			break;//只要存在一个i满足后面就不用算了
		}
	}
	if (m == 0) //判断
	{
		printf("%d是素数\n", n);
	} else 
	{
		printf("%d不是素数\n", n);
	}
 
	return 0;
}

2.取素数

如:求100到200间的素数
在这里有一个素数的性质:在10以后的素数的个位只能是1,3,7,9;
我们发现要想精确的利用这个性质比较困难,但我们可以放大一下范围,近似的理解为10以后的素数全是奇数。
同时,我们也都知道奇数是不可能被偶数所整除,于是最终的代码为

#include <stdio.h>

int main()
{
	int n;
	for (n = 101; n <= 200; n+=2)//利用10以后的素数只能是奇数
	{
		int i = 3;
		while(i < n)
		{
			if (n%i==0)
			{
				break;
			}
			i+=2;//奇数不可能会被偶数整除
		}
		if (i == n)
			printf("%d\n", n);
	}
}

总结

以上就是我在面对素数问题的解法,主要还是抓住素数本身的性质来做文章,大家如果有更好的办法也可以互相交流,如果有错误麻烦及时指正。
感谢观看。
在这里插入图片描述

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值