简洁易懂带注释题解
2025-07-18 12:31:30
发布于:上海
5阅读
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
有帮助,赞一个