给出c++代码,对于 q 个询问,每个询问提供一个正整数 n,请求出有多少个不超过 n 的正整数 i,满足 n % i 是质数?
时间: 2024-10-21 11:07:06 浏览: 35
在 C++ 中,你可以使用一个函数来检查一个数是否为质数,然后遍历所有不超过给定数字 n 的数,看它们除以当前数余数是否为质数。这里是一个简单的示例代码:
```cpp
#include <iostream>
#include <vector>
// 判断一个数是否为质数
bool isPrime(int num) {
if (num <= 1)
return false;
for (int i = 2; i * i <= num; ++i) {
if (num % i == 0)
return false;
}
return true;
}
int countPrimesDivisors(int n) {
int count = 0;
for (int i = 1; i <= n; ++i) {
if (isPrime(n % i))
count++;
}
return count;
}
int main() {
int q;
std::cin >> q;
// 处理 q 个查询
for (int qi = 0; qi < q; ++qi) {
int n;
std::cin >> n;
int result = countPrimesDivisors(n);
std::cout << "对于 n=" << n << ", 有 " << result << " 个满足条件的正整数。\n";
}
return 0;
}
```
这个程序首先读取查询的数量 q,然后对每一个输入的 n,都会计算小于等于 n 的数中,使得 n 能够被整除并产生质数余数的数的数量。
阅读全文