简洁易懂带注释题解
2025-07-18 12:31:30
发布于:上海
9阅读
0回复
0点赞
代码如下
#include<iostream>
#include<cmath>
using namespace std;
int n, m;  // n表示数组长度,m表示查询次数
int a[1001], q[1001]; 
int sum = 0; // 存储满足条件的素数之和
// 判断素数的函数
bool isPrime(int n) {
    if (n <= 1) return false;    // 1不是素数
    if (n == 2) return true;     // 2是素数
    if (n % 2 == 0) return false; // 排除所有偶数
    // 检查从3到√n的奇数是否能整除n
    for (int i = 3; i <= sqrt(n); i += 2) {
        if (n % i == 0) {
            return false;  // 如果能整除,不是素数
        }
    }
    return true;  // 否则是素数
}
int main() {
    cin >> n >> m;
    // 输入数组元素
    for(int i = 0; i < n; i++) {
        cin >> a[i];
    }
    for(int i = 0; i < m; i++) {
        cin >> q[i];
        // 检查对应位置的数是否为素数
        if (isPrime(a[q[i] - 1])) {  // 注意数组从0开始,所以需要-1
            sum += a[q[i] - 1];  // 如果是素数,累加到sum中
        }
    }
    cout << sum;
    return 0;
}
全部评论 1
制作不易,留赞后去
2025-07-18 来自 上海
0






有帮助,赞一个