【007】素数判断基本方法及初级进阶方法

7.给出一个大于或等于3的正整数,判断它是不是一个素数。
解题思路:
首先我们要了解素数的概念,素数:也叫做 “质数”,是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数,也就是不能再整除其他数。
判断素数的方法:这里采用试除法(将输入的数n与从2到n - 1的数取模,若没有模为零的情况,则代表n是素数)

#include<stdio.h>
int main()
{
	int n = 0;
	int i = 0;
	printf("请输入一个大于3的正整数:>>\n");
	scanf("%d", &n);
	for (i = 2; i < n; i++)
	{
		if (0 == (n % i))
			break;
	}
	if (i == n)
		printf("%d不是素数\n", n);
	else
		printf("%d是素数\n", n);
	return 0;
}

结果展示:
【007】素数判断基本方法及初级进阶方法


虽然我们成功的判断了一个数是否为素数,但是判断的方法效率比较低,考虑到若n不为素数,那么一定存在n = a * b ,且a,b不为1和n 也就是说在1 - n之间肯定存在n的因数,a或b因数之间的一个肯定小于等于 开平方n 【007】素数判断基本方法及初级进阶方法

所以我们的判断条件可以从n - 1 缩小到√(“n”) 这个范围 具体代码如下:

#include<stdio.h>
int main()
{
	int n = 0;
	int i = 0;
	printf("请输入一个大于3的正整数:>>\n");
	scanf("%d", &n);
	for (i = 2; i <= sqrt(n); i++)//sqrt()函数为开平方函数,头文件为math.h
	{
		if (0 == (n % i))
			break;
	}
	if (i > sqrt(n))//判断条件也需要相应的调整
		printf("%d是不素数\n", n);
	else
		printf("%d是素数\n", n);
	return 0;
}

【007】素数判断基本方法及初级进阶方法

上一篇:L2-007 家庭房产 (25 分)


下一篇:JS笔记007 - 第07章 时间对象