用C语言实现筛法求素数,n从键盘输入,输出小于n的所有素数,即依次删除2的倍数,3的倍数,根号n的倍数
时间: 2024-05-20 08:17:19 浏览: 155
一种快速的素数筛法的c语言实现
5星 · 资源好评率100%
#include <stdio.h>
#include <math.h>
int main() {
int n, i, j;
printf("请输入一个正整数n:");
scanf("%d", &n);
// 声明并初始化一个数组,用于存储是否为素数的标记
int is_prime[n+1];
for (i = 2; i <= n; i++) {
is_prime[i] = 1; // 初始化为1,表示是素数
}
int sqrt_n = sqrt(n); // 根号n
// 依次删除2的倍数,3的倍数,...,根号n的倍数
for (i = 2; i <= sqrt_n; i++) {
if (is_prime[i]) { // 如果i是素数
for (j = i*i; j <= n; j += i) { // 删除i的倍数
is_prime[j] = 0;
}
}
}
// 输出小于n的所有素数
printf("小于%d的素数有:\n", n);
for (i = 2; i <= n; i++) {
if (is_prime[i]) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
阅读全文