C语言程序设计 - 判断一个数是否为素数

素数的定义:除了1和它本身,不能被其他数整除那么这个数就是素数

#include 				// 包含基本输入输出头文件

int main()
{
	int n = 0;
	printf("请输入1个数判断是否素数:");
	scanf("%d", &n);			// scanf()来读取用户输入的值

	int i = 0;
	for (i = 2; i < n; i++)		// 根据素数的定义,这里的i从2开始,结束是n
	{							// 比如用户输入7,那么i从2开始,结束就是6
		if (n % i == 0)			// 如果n能整除i,那么这个数就不是素数
		{						// 比如用户输入10,那么10%2==0,不满足素数的定义
			printf("%d不是素数\n", n);
			break;				// 判断这个数是素数一次就行了,不需要多次,所以这里直接break跳出for循环
		}
	}							
	if (i == n)					// 这里for循环执行完了,那么这个数就是素数
	{							// 比如用户输入7,上面的for循环的i从2到6都不能整除7,这时候i==7跳出了for循环
		printf("%d是素数\n", n);// 打印素数
	}
	return 0;
}

也可以使用sqrt()开平方来判断是否为素数,这样判断次数变少,程序执行速度就会更快

#include 				// 包含基本输入输出头文件
#include 				// 引入math库

int main()
{
	int n = 0;

	printf("请输入1个数判断是否素数:");
	scanf("%d", &n);			// scanf()来读取用户输入的值

	if (n <= 1) {				// <=1 直接打印不是素数
		printf("%d 不是素数",n);
	}
	else {

		int i = 0;
		for (i = 2; i <= sqrt(n); i++)		// 这里引入开平方函数sqrt()也可以解决,也就是找这个数的因子
		{									// 比如 20这个数 可以拆成 20=10*2 or 20=4*5 
			if (n % i == 0)					// 不管是什么数, 这个数其中一个因子恒 <= 这个数开平方
			{								// 比如sqrt(20) = 4   20=10*2 的 因子2 和 20=4*5 因子4
				printf("%d不是素数\n", n);	
				break;
			}
		}
		if (i > sqrt(n))				// 这里for循环执行完了,那么这个数就是素数
		{
			printf("%d是素数\n", n);// 打印素数
		}
	}
	return 0;
}

测试运行结果:C语言程序设计 - 判断一个数是否为素数_第1张图片

 C语言程序设计 - 判断一个数是否为素数_第2张图片

你可能感兴趣的:(c语言,青少年编程)