【C语言】查找素数

C语言的学习过程,我把它记录下来
素数又称质数。所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数
首先我用了最笨的办法,依次遍历来查找素数,更高级的办法还在学习
#define _CRT_SECURE_NO_WARNINGS 1  //在VS中使用scanf函数需加入
#include<stdio.h>

int main()
{
	int sum1 = 0, sum2 = 0, a = 0;
	printf("请输入想要打印素数的范围,以空格分割(如100 200):");
	scanf("%d %d", &sum1, &sum2);
	if (sum1 < 2)     //0和1去除掉,至少从2开始
		sum1 = 2;

	for (;sum1<=sum2;sum1++)  //循环,依次遍历输入的范围。
	{
		
		for (a=2;a < sum1;a++) //循环,遍历查找素数
		{			
			if (sum1 % a == 0)
				break;
		}
		if(a>=sum1)  //确认是否素数
		printf("%d   ", sum1);	 //打印素数
		
	}

	return 0;
}

下面这个方法减少了很多循环次数,我们已知能被2整除的不可能是素数,所以如下

#define _CRT_SECURE_NO_WARNINGS 1  //在VS中使用scanf函数需加入
#include<stdio.h>  
#include<math.h>  //使用了sqrt数学函数,需要此头文件

void temp(int n)//判断n是否为素数
{
	int i;
	for (i = 2; i <= sqrt(n); i++)     //sqrt求平方根,进一步减少运算量
	{
		if (n % i == 0)break;
	}
	if (i > sqrt(n))
	{
		printf("%d\n", n);
	}
}

int main()
{
	int sum1 = 0, sum2 = 0;
	printf("请输入想要打印素数的范围,以空格分割(如100 200):");
	scanf("%d %d", &sum1, &sum2);
	sum1 < 2 ? sum1 = 2 : sum1;        //0和1去掉
	sum1 % 2 == 0 ? sum1 += 1 :sum1;  //判断输入是否为偶数,如果是就+1
	for (; sum1 < sum2; sum1 += 2)   //每次自增2,减少运算量
	{
		temp(sum1);                //转移到上面的函数去计算
	}
	return 0;
}

刚刚看到了更厉害的数学方法,表示看不懂,等以后学会了来更新方法

希望能和大家一起学习、进步,每一个关注和点赞都是我学习的动力,我也会回关回赞的,互相督促共同进步
欢迎各位大佬指导提携,感激不尽
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值