在1000000找出比给定质数小的质数 写一个c语言程序
时间: 2024-03-20 18:39:58 浏览: 57
C语言程序设计-找出一个大于给定整数且紧随这个整数的素数,并作为函数值返回;
5星 · 资源好评率100%
以下是一个 C 语言程序,可以找出比给定质数小的质数,限定在 1000000 范围内:
```c
#include <stdio.h>
#include <stdbool.h>
#define MAX_N 1000000
bool is_prime[MAX_N + 1];
int main() {
int n;
printf("请输入一个正整数n:");
scanf("%d", &n);
// 使用筛法求出 2~MAX_N 范围内的所有质数
for (int i = 2; i <= MAX_N; i++) {
is_prime[i] = true;
}
for (int i = 2; i * i <= MAX_N; i++) {
if (is_prime[i]) {
for (int j = i * i; j <= MAX_N; j += i) {
is_prime[j] = false;
}
}
}
printf("%d以下的质数有:", n);
for (int i = 2; i < n; i++) {
if (is_prime[i]) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
```
该程序在主函数中,用户输入一个正整数 `n`,程序输出小于 `n` 的所有质数。为了快速判断某个数是否为质数,程序使用了经典的筛法算法,先求出 2~1000000 范围内的所有质数,然后在输出时直接使用已求出的质数表进行判断。
阅读全文