c++c++质因数分解:每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,把一个合数用质因数相乘的形式表示出来,叫分解质因数。如: 30=2*3*5。 提示:对一个数进行质因数分解,先从最小的质数除起,一直除到结果为质数为止。(如:20/2=10; 10/2=5; 5/3; 5/5=0; 则: 20=2*2*5) 编程步骤: (1) 先设计一个函数bool isPrime(int num),用于判断一个数num是否是质数。 (2) 再设计一个函数(void getPrimeFactor(int n, int *p) )对一个正整数n进行质因数分解,其结果通过指针变量p存放到一个数组a[10]中。 可以参考如下程序结构设计: #include <iostream> #include <cmath> using namespace std; //判断一个数是否是质数 bool isPrime(int num) { … return true; } //对n进行质因数分解,存放到p[]中 void getPrimeFactor(int n, int *p) { … } int main() { int a[10] = { 0 }; int N; cin>>N; //如:3233 getPrimeFactor(N,a); int i; for(i=0;i<10;i++) { cout<<a[i]<<" "; } cout<<endl; return 0;
时间: 2024-01-09 11:04:30 浏览: 164
以下是C++代码实现:
```
#include <iostream>
#include <cmath>
using namespace std;
//判断一个数是否是质数
bool isPrime(int num) {
if(num <= 1) return false; //1不是质数
int sqr = sqrt(num);
for(int i = 2; i <= sqr; i++) {
if(num % i == 0) return false; //如果能被整除,说明不是质数
}
return true;
}
//对n进行质因数分解,存放到p[]中
void getPrimeFactor(int n, int *p) {
int i = 0;
int k = 2;
while(n != 1) { //当n不为1时一直循环
if(isPrime(k) && n % k == 0) { //如果k是质数且能被n整除
p[i++] = k; //将k添加到p数组中
n /= k; //更新n的值
} else {
k++; //否则继续寻找下一个质数
}
}
}
int main() {
int a[10] = { 0 };
int N;
cin>>N;
getPrimeFactor(N,a);
int i;
for(i = 0; i < 10; i++) {
if(a[i] == 0) break; //当p数组中出现0时,说明已经找到了所有的质因数
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}
```
输入一个正整数N,程序会输出N的质因数分解结果。例如,输入3233,程序输出17 19。
阅读全文