【C语言】求100-200的素数

本程序使用C语言实现从101到200之间的素数筛选。通过内嵌的平方根函数和双重循环结构,有效地判断了指定范围内所有奇数是否为素数,并将结果输出。
/* Note:Your choice is C IDE */
#include "stdio.h"
#include "math.h"
void main()
{
	//判断素数
	int n,k,i,m=0;
	for(n=101;n<=200;n=n+2){
		k=sqrt(n);
		for(i=2;i<=k;i++){
			if(n%i==0)break;
		}
			if(i>=k+1){
				printf("%d  ",n);
				}
		}
}

以下是几种基于C语言100200之间素数的代码实现: ### 方法一:基本试除法 ```c #include <stdio.h> int main() { int i = 0; int j = 0; int count = 0; for (i = 101; i <= 200; i++) { int flag = 1; // 假设i是素数 for (j = 2; j <= i - 1; j++) { if (i % j == 0) { flag = 0; // 表示i不是素数 break; // 当2~i-1之间有任意数满足这个条件,就利用break跳出循环 } } if (flag == 1) { printf("%d ", i); count++; // 计算一共多少素数 } } printf("\ncount = %d\n", count); return 0; } ``` 此方法通过遍历101到200的每个数,用2到该数减1的所有数去试除,若能整除则不是素数,否则是素数[^1]。 ### 方法二:使用sqrt优化试除法 ```c #include <stdio.h> #include <math.h> int main() { int i = 0; for (i = 100; i <= 200; i++) { int j = 0; int k = 0; for (j = 2; j <= sqrt(i); j++) { if (i % j == 0) { k = 2; // 不是素数,就改变k的值 break; } } if (k == 0) { printf("%d\n", i); } } return 0; } ``` 该方法在试除时,只需要试除到该数的平方根,减少了不必要的计算量[^3]。 ### 方法三:优化的素数判断函数法 ```c #include <stdio.h> #include <stdbool.h> // 函数原型声明 bool isPrime(int num); int main() { // 定义区间 int start = 100; int end = 200; printf("素数列表:\n"); // 遍历指定区间 for (int i = start; i <= end; i++) { if (isPrime(i)) { printf("%d ", i); } } return 0; } // 判断是否为素数的函数 bool isPrime(int num) { if (num <= 1) return false; // 小于等于1的数不是素数 if (num == 2 || num == 3) return true; // 2和3是素数 if (num % 2 == 0 || num % 3 == 0) return false; // 排除能被2或3整除的数 // 检查从5开始到sqrt(num)的所有奇数 for (int i = 5; i * i <= num; i += 6) { if (num % i == 0 || num % (i + 2) == 0) return false; } return true; } ``` 这里定义了`isPrime`函数来判断一个数是否为素数,在主函数中遍历区间调用该函数,提高了代码的复用性和效率。该函数首先处理一些基本情况,排除能被2或3整除的数,然后只检查从5开始的奇数因子,且每次循环增加6[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值