You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现检查数组中每个元素是否为质数的程序?

解决数组元素的质数判断问题

嘿,我来帮你把单个数值的质数判断功能扩展到数组上,顺便先修正一下你现有代码里的小问题——你提到它只适用于8以内的数字,确实是因为当前的质数判断逻辑不够完整,咱们一步步来:

第一步:修复单个数值的质数判断逻辑

你现在的函数只检查了是否为偶数或者小于2,但像9、15这类奇数合数就会被误判为质数。正确的质数判断应该要检查从2到sqrt(value)之间的所有数是否能整除它,这样才能准确判断所有大于2的数。

修复后的isElementPrime函数应该是这样的:

#include <stdio.h>
#include <math.h> // 需要用到sqrt函数

// 返回1表示是质数,0表示不是,同时打印结果
int isElementPrime(int value) {
    if (value < 2) {
        printf_s("Number %d is not prime\n", value);
        return 0;
    }
    if (value == 2) {
        printf_s("Number %d is prime\n", value);
        return 1;
    }
    // 检查偶数
    if (value % 2 == 0) {
        printf_s("Number %d is not prime\n", value);
        return 0;
    }
    // 检查从3到sqrt(value)的奇数
    for (int i = 3; i <= sqrt(value); i += 2) {
        if (value % i == 0) {
            printf_s("Number %d is not prime\n", value);
            return 0;
        }
    }
    printf_s("Number %d is prime\n", value);
    return 1;
}

第二步:扩展到数组的处理

要处理数组很简单,只需要在main函数里定义数组,然后用循环遍历数组的每一个元素,逐个调用上面的判断函数就可以了。比如:

int main() {
    // 定义一个示例数组
    int numbers[] = {2, 3, 4, 9, 11, 15, 17, 20};
    // 计算数组的元素个数:总字节数 / 单个元素字节数
    int arraySize = sizeof(numbers) / sizeof(numbers[0]);

    printf_s("Checking each element in the array:\n");
    // 遍历数组
    for (int i = 0; i < arraySize; i++) {
        isElementPrime(numbers[i]);
    }

    return 0;
}

代码运行结果

上面的代码运行后会输出:

Checking each element in the array:
Number 2 is prime
Number 3 is prime
Number 4 is not prime
Number 9 is not prime
Number 11 is prime
Number 15 is not prime
Number 17 is prime
Number 20 is not prime

这样就完美实现了数组元素的逐个质数判断啦!

内容的提问来源于stack exchange,提问作者R.Weels

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:08:00