1.什么是素数/质数

素数/质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数

2.输出100~200之间的素数/质数

第一种方法:先找出100~200之间所有的整数,再剔除非素数的数

因为有个条件是除 1 以外,所以第二次循环直接从 2 开始。如果循环过程中出现了能被 n 整除的数就证明它不是素数直接跳出,没必要再继续循环了。当 i 和 n 相等且没有其他数能整除 i 时,就证明 i 是素数。

#include <stdio.h>
void main() {
	int n;
	for (int i = 100; i <= 200;i++) {//找出100~200之间的整数
		for (n = 2; n <= i;n++) {//用i去掉除1和它本身能被整除的数
			if (i % n == 0) break;
		}
		if (i == n) {
			printf("素数:%d\n", i);
		}
	}
}

第二种方法:和上面的相差不大,主要差别就是 i+=2 

这样找出来的都是偶数。偶数不可能是素数,也就是只对奇数进行判断,效率相比第一种方法也会增加。

void main() {
	int n;
	for (int i = 101; i <= 200; i += 2) {//偶数不可能是素数,效率更快
		for (n = 2; n <= i; n++) {
			if (i % n == 0) break;
		}
		if (i == n) {
			printf("素数:%d\n", i);
		}
	}
}

第三种方法:相比第二种方法多了平方根函数,效率相比之下更快

sqrt():计算平方根,需要引入math.h头文件。平方根,如果参数为负,则返回不定值、

如果平方根能被整除说明 i 不是素数,相反没有整除的就说明 i 是素数

void main() {
	int n;
	for (int i = 101; i <= 200; i+=2) {
		//sqrt:计算平方根
		int sqrti = (int)sqrt(i);//用开平方后效率更高
		for (n = 2; n <= i; n++) {
			if (i % n == 0) break;
		}
		if (i == n) {
			printf("素数:%d\n", i);
		}
	}
}

关于C语言中输出100~200之间的素数到这里就结束了!如果您有什么更好的建议或想法可以留在评论区

3e8f166d69ca4be0b3fc942f95de8565.jpeg

 

第一次学C语言如果有不好的地方请留在评论区或私信我也可以,以后有空的话也会经常发博客。谢谢支持!~

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐