C语言判断素数(求素数)

本文介绍了两种使用C语言判断素数的方法。第一种方法通过遍历2到n-1的所有整数检查能否整除n,第二种方法优化了判断过程,只检查2到n的平方根。还提供了一个打印1到100之间所有素数的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C语言判断素数(求素数)

素数又称质数。所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除。

思路1):因此判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数。

思路2):判断方法还可以简化。m 不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~  之间的每一个整数去除就可以了。如果 m 不能被 2 ~  间任一整数整除,m 必定是素数。例如判别 17 是是否为素数,只需使 17 被 2~4 之间的每一个整数去除,由于都不能整除,可以判定 17 是素数。
    原因:因为如果 m 能被 2 ~ m-1 之间任一整数整除,其二个因子必定有一个小于或等于 ,另一个大于或等于 。例如 16 能被 2、4、8 整除,16=2*8,2 小于 4,8 大于 4,16=4*4,4=√16,因此只需判定在 2~4 之间有无因子即可。

思路1实现:

#include <stdio.h>
int main() {
	int n;
	printf("请输入一个1-100之间的整数:\n");
	scanf("%d", &n);


	int m = 0;
	for (int i = 2; i < n; i++ ) {
		if(n % i  == 0) {
			m++;
		}
	}
	if (m == 0) {
		printf("%d是素数\n", n);
	} else {
		printf("%d不是素数\n", n);
	}

	return 0;
}

思路2实现:

#include <stdio.h>
#include <math.h>
int main() {
	int n;
	printf("请输入一个1-100之间的整数:\n");
	scanf("%d", &n);


	int i = 0;
	int q = sqrt(n);
	for (i = 2; i <= q; i++ ) {
		if(n % i  == 0) {
			break;
		}
	}
	if (i > q) {
		printf("%d是素数\n", n);
	} else {
		printf("%d不是素数\n", n);
	}

	return 0;
}

 

《C与指针》4.14 - 2:

打印1~100之间所有质数:

#include <stdio.h>
int main() {
	int num, divisor;
	printf("1, 2");
	for (num = 3; num <= 100; num += 2) {
		for(divisor = 3; divisor < num; divisor +=2 ) {
			if (num % divisor == 0) {
				break;
			}
		}

		if(divisor >= num) {
			printf(", %d", num);
		}
	}
	printf("\n");
	return 0;
}

结果:

1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97

 

评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值