C语言实现素数判断(优化)

素数:指的是“大于1的整数中,只能被1和这个数本身整除的数。

算法思想:

1.设n为一个大于1的整数。

2.在2-\sqrt{}n之间任取一个整数,都不能被n整除,则判断n是素数。

为什么判定一个素数只要判断此数n能否被2~根号n整除?

证明如下:

假设n为合数,则可以n=a*b;而n= \sqrt{}n*\sqrt{}n。则a,b中必有一个数小于等于\sqrt{}n,一个数大于\sqrt{}n。也就是n中有大于\sqrt{}n的数存在,必定有一个小于\sqrt{}​​​​​​​n的数与之对应。

代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int n;
	printf("请输入要判断的数:\n");
	(void)scanf("%d", &n);  
	for (int i = 2;i <= sqrt(n); i++)  //将n除以2到根号n内的所有整数
	{
		if (n % i == 0)                //判断n能否被i整除。若能则不为素数
		{
			printf("%d不是素数!",n);
			return 0;                   //return 0;直接结束程序,不会再往下操作
		}
	}

	printf("%d是素数\n", n);

	return 0;
}

           以上代码仅供参考,如有问题欢迎大家在评论区指正。

 

, 

 

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值