关于#c语言#的问题:【问题内容】编写程序生成100个[2,1000之间的随机整数,并统计素数的个数

【问题内容】编写程序生成100个[2,1000]之间随机整数,输出其中的素数,并统计素数的个数。
【输出结果】素数

#include <stdio.h>
int main()
{
    //定义变量 并且进行初始化 
    int i, j, number;
    j = 0;
     
    //使用循环判断素数,判断2-1000之间的素数 
    for (number = 2; number <= 1000; number++)   //举出2-1000之间的数字 
    {
        for(i = 2; i <= number-1; i++)  //使用辗转相除法进行计算
        {
            if(number % i == 0)        //进行判断结构 
            break;                   //满足number/i==0的就说明不是素数 
        } 
        if (i >= number)         //判断要打印的素数是否满足大于本身 
        {
            printf ("%d\t", number);   //打印素数 
            j = j + 1;               //对素数的数目进行累计 
            if ( j % 8 == 0)      //每行只有八个数字的条件 
            printf ("\n");
        }
    } 
    printf ("\n");
    return 0;
}


```c


```

该回答引用chatgpt:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int isPrime(int n);

int main() {
    int arr[100];
    int i, count = 0;

    // 生成100个[2,1000]之间的随机整数
    srand((unsigned)time(NULL));
    for (i = 0; i < 100; i++) {
        arr[i] = rand() % 999 + 2;
    }

    // 打印随机整数
    printf("随机整数:");
    for (i = 0; i < 100; i++) {
        printf("%d ", arr[i]);
    }

    // 统计素数个数
    printf("\n素数:");
    for (i = 0; i < 100; i++) {
        if (isPrime(arr[i])) {
            printf("%d ", arr[i]);
            count++;
        }
    }

    // 打印素数个数
    printf("\n素数个数:%d", count);

    return 0;
}

// 判断素数的函数
int isPrime(int n) {
    int i;
    if (n < 2) {
        return 0;
    }
    for (i = 2; i * i <= n; i++) {
        if (n % i == 0) {
            return 0;
        }
    }
    return 1;
}


在上面的代码中,我们首先使用 srand() 函数初始化随机数种子,然后使用 rand() 函数生成 100 个 [2,1000] 之间的随机整数,并将它们存储在一个 int 数组中。然后,我们遍历该数组,使用 isPrime() 函数判断每个整数是否为素数。如果是素数,则打印出来,并将素数个数加1。最后,我们打印素数个数。

isPrime() 函数接收一个整数作为参数,如果该整数是素数,则返回 1,否则返回 0。该函数的实现采用了一种简单的素数判断算法:从2开始,依次判断每个数字是否能整除该数,如果存在一个数字能整除该数,则该数不是素数。这里我们只需要判断到根号n即可。

注意,在判断一个数n是否为素数时,只需要判断2到根号n之间的所有数字即可。在代码中,我们使用了 i * i <= n 来代替 i <= sqrt(n),以避免使用 sqrt() 函数可能带来的精度问题

我去看看怎么样

【c语言】

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>

int main(void) {
    int count = 0; // 计数器,用于统计素数个数
    srand(time(0)); // 初始化随机数种子
    for (int i = 0; i < 100; i++) {
        int num = rand() % 999 + 2; // 生成 [2,1000] 之间的随机整数
        bool isPrime = true; // 假设 num 是素数
        for (int j = 2; j * j <= num; j++) {
            if (num % j == 0) { // 如果 num 能被 j 整除,则 num 不是素数
                isPrime = false;
                break;
            }
        }
        if (isPrime) { // 如果 num 是素数,则计数器加一
            count++;
        }
    }
    printf("素数个数: %d\n", count); // 输出素数个数
    return 0;
}