输出若数字 x x有且仅有 1 1和其本身两个因数,则 x x是一个质数数字。 米饭大魔王规定:若数字 x x有刚好 4 4个不同的因数数字,则称 x x为”米饭大魔王伪素数”。 若 x x是”米饭大魔王伪素数”则输出YES,否则输出NO。的c++代码
时间: 2024-09-18 11:16:37 浏览: 30
1亿以内的质数(共5761455个数).txt_1亿以内素数的个数
5星 · 资源好评率100%
在C++中,你可以创建一个函数来检查一个数是否是“米饭大魔王伪素数”。以下是一个简单的示例代码:
```cpp
#include <iostream>
#include <vector>
// 函数用来计算一个数的因子并存储在一个vector中
std::vector<int> primeFactors(int num) {
std::vector<int> factors;
for (int i = 2; i * i <= num; i++) {
while (num % i == 0) {
factors.push_back(i);
num /= i;
}
}
if (num > 1) {
factors.push_back(num); // 如果num还有大于1的因子,添加进去
}
return factors;
}
bool isMongolShamgodPrime(int num) {
std::vector<int> factors = primeFactors(num);
if (factors.size() == 4 && std::adjacent_find(factors.begin(), factors.end()) == factors.end()) { // 检查是否有重复
return true;
} else {
return false;
}
}
int main() {
int x;
std::cout << "请输入一个整数: ";
std::cin >> x;
if (isMongolShamgodPrime(x)) {
std::cout << "YES" << std::endl;
} else {
std::cout << "NO" << std::endl;
}
return 0;
}
```
这个代码首先通过`primeFactors`函数找到输入数字的所有因子,并存储在一个向量中。然后,它检查这个向量的长度是否为4且没有连续的元素(即没有重复),如果满足条件则是“米饭大魔王伪素数”,反之则不是。
阅读全文