哼,轻松拿捏素数判断!!

哈喽,进来的童鞋你们好哇!俺今天想给大家分享编程里面素数判断的的技巧,这也是我实践过后的心得。

首先咱都知道,判断一个数是否是素数,就是看除了1和他自身之外还有没有其他数能整除它

举个栗子,7就是一个素数,在1 2 3 4 5 6 7范围内,除了1 和 7之外2 3 4 5 6都不能整除7。

知道这个,咱以后判断一个数 num 是否是素数的基础方法就是利用一个循环变量从2~n-1来整除 num,能整除那就不是素数反之就是素数。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
int main()
{
	int i = 0;
	int num = 0;
	int flag = 1;//flag值为1代表是素数
	scanf("%d", &num);
	for (i = 2; i <= num - 1; i++ )
	{

		if (num % i == 0)
		{
			flag = 0;//值为零则不是素数
			break;
		}
	}
	if (flag == 1)
		printf("该数是素数!\n");
	else
		printf("该数不是素数!\n");

	return 0;
}

以上是C语言版的判断素数的一个函数。

相信对大部分童鞋来说,上面的方法大家都懂的,所以我下面分享两条我学到的优化判断的条件,这样程序的运行效率会更高!

1.既然素数不能被2整除,那么所有的偶数都不是素数咯

2.如果一个数n 能表示成 n = a * b (除了1*n),那么我们就可以知道 a,b两个数必定是一大一小或者两个相等对吧。而且较小的那个数一定是小于或者等于的(这个你肯定不信,你去实践就知道了),这样一来我们判断素数又可以更简单了,只需从2判断到的位置即可,若在这之间能找到那个因数,那么该数就不是素数,找不到那就是素数。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
int sunumber(int num);
int main()
{
	int i = 0;
	for (i = 101; i <= 200; i += 2)
	{
		
		if (sunumber(i))
		{
			printf("%d ", i);
		}
		
	}
	return 0;
}
int sunumber(int num)
{
	int i = 0;
	for (i = 2; i <= sqrt(num); i++)
	{
		if (num % i == 0)
			return 0;
	}
	return 1;
}

以上是一个优化过后的找100~200之间素数的代码例子,各位童鞋大可去试这个方法,有问题可发评论,咱可以一起讨论。若你能受益还请你给俺点个赞哈。

OK今天就分享这些。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值