要求编写程序,用户输入一个正整数,输出其所有的质因子。注意:输入只能使用scanf()或cin函数,使用其他输入函数不得分。
时间: 2024-10-22 21:06:53 浏览: 29
编写这样的程序可以按照以下步骤进行:
首先,你需要创建一个函数来检查一个数是否为质数。质数是指只有1和它本身两个正因数的自然数。函数大致如下:
```c++
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;
}
```
然后,主程序会循环接收用户的输入,并找出所有质因子。这里我们可以使用一个while循环,直到输入非正整数为止:
```c++
#include <iostream>
int main() {
int number;
std::cout << "请输入一个正整数: ";
scanf("%d", &number);
while (number > 1) {
// 如果当前数是质数,输出并继续分解
if (isPrime(number)) {
std::cout << number << " ";
}
// 尝试除以每个小于它的数,查找质因子
for (int factor = 2; factor * factor <= number; ++factor) {
if (number % factor == 0) {
number /= factor; // 更新number为剩余部分
break; // 找到一个因子后跳出内层循环
}
}
}
std::cout << "\n质因数分解完成.\n";
return 0;
}
阅读全文