用c语言编程找出前1000个素数存放到数组中,然后输入一个整数N,输出第N个素数的值。 输入格式: 输入有多组数据,为若干个空格分隔的整数。 输出格式: 对于输入数据中每个n,输出第n个素数的值,多个输出之间以逗号分隔。
时间: 2024-05-10 22:21:11 浏览: 115
思路:
- 先用一个函数判断一个数是否为素数。
- 然后用一个循环从2开始遍历所有的自然数,判断是否为素数,如果是素数就存入数组中,直到数组中存满了前1000个素数。
- 输入一个整数N,直接输出第N个素数。
实现:
```c
#include <stdio.h>
#define MAX_PRIME_NUM 1000
int is_prime(int n) { // 判断n是否为素数
if (n < 2) {
return 0;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int prime[MAX_PRIME_NUM]; // 存放前1000个素数的数组
prime[0] = 2; // 将2存入数组中
int count = 1; // 当前已存入的素数个数
int n;
while (count < MAX_PRIME_NUM) { // 循环找出前1000个素数
for (int i = prime[count - 1] + 1; ; i++) {
if (is_prime(i)) {
prime[count++] = i;
break;
}
}
}
while (scanf("%d", &n) != EOF) {
printf("%d", prime[n - 1]); // 输出第n个素数
while (scanf("%d", &n) && n != -1) { // 处理多组数据
printf(", %d", prime[n - 1]);
}
printf("\n");
}
return 0;
}
```
阅读全文