|
10鱼币
任务描述
编程找出前1000个素数存放到数组中,然后输入一个整数N,输出第N个素数的值。
输入格式:
输入有多组数据,为若干个空格分隔的整数。
输出格式:
对于输入数据中每个n,输出第n个素数的值,多个输出之间以逗号分隔。
输入样例:
1 2 3 4 5 4 3
输出样例:
2,3,5,7,11,7,5
输入样例:
5 8 9 10 100 200
输出样例:
11,19,23,29,541,1223
用C语言,越简单越好
我们可以先创建一个函数用来判断素数,然后生成一个前1000个素数的数组,然后根据输入输出对应的素数。
以下是一个使用C语言实现的简单示例代码:
- #include <stdio.h>
- #include <stdbool.h>
- // 判断是否为素数
- bool isPrime(int n) {
- if (n <= 1) return false;
- if (n <= 3) return true;
- if (n % 2 == 0 || n % 3 == 0) return false;
- for (int i = 5; i * i <= n; i += 6) {
- if (n % i == 0 || n % (i + 2) == 0) return false;
- }
- return true;
- }
- // 填充素数数组
- void fillPrimes(int primes[], int count) {
- int number = 2; // 开始的第一个素数
- int index = 0;
- while (index < count) {
- if (isPrime(number)) {
- primes[index++] = number;
- }
- number++;
- }
- }
- int main() {
- int primes[1000];
- fillPrimes(primes, 1000); // 获得前1000个素数
- int n;
- bool first = true; // 用于输出格式控制(是否输出逗号)
-
- while (scanf("%d", &n) != EOF) {
- if (n >= 1 && n <= 1000) {
- if (!first) {
- printf(","); // 非第一个输出的数前加逗号
- }
- printf("%d", primes[n - 1]); // 输出第n个素数,数组下标从0开始,所以是n-1
- first = false; // 更新状态,表明已经输出过数字
- } else {
- printf("Input out of range\n");
- }
- }
-
- return 0;
- }
复制代码
上面的代码首先通过isPrime函数来检查一个数是否是素数。之后,我们定义了fillPrimes函数用来填充素数数组。main函数处理输入输出,并控制输出格式。需要注意的是,我们假设输入的数字 N 是合法的,即1 <= N <= 1000。如果输入的数字超出这个范围,程序将打印错误消息。
该代码还考虑了多个输出间应该用逗号分隔,但第一个输出前不应有逗号。因此我们使用first变量来追踪是否已经进行了输出,从而动态地确定是否打印逗号。
求最佳答案
|
最佳答案
查看完整内容
我们可以先创建一个函数用来判断素数,然后生成一个前1000个素数的数组,然后根据输入输出对应的素数。
以下是一个使用C语言实现的简单示例代码:
上面的代码首先通过isPrime函数来检查一个数是否是素数。之后,我们定义了fillPrimes函数用来填充素数数组。main函数处理输入输出,并控制输出格式。需要注意的是,我们假设输入的数字 N 是合法的,即1
|