用C++编写:先设计一个函数bool isPrime(int num),用于判断一个数num是否是质数。 (2) 再设计一个函数(void getPrimeFactor(int n, int *p) )对一个正整数n进行质因数分解,其结果通过指针变量p存放到一个数组a[10]中。
时间: 2024-02-05 08:11:32 浏览: 150
以下是代码实现:
```c++
#include <iostream>
#include <cmath>
using namespace std;
bool isPrime(int num) {
if (num < 2) return false;
for (int i = 2; i <= sqrt(num); i++) {
if (num % i == 0) return false;
}
return true;
}
void getPrimeFactor(int n, int *p) {
int index = 0;
for (int i = 2; i <= n; i++) {
while (n % i == 0 && isPrime(i)) {
p[index++] = i;
n /= i;
}
}
}
int main() {
int n = 36;
int a[10] = {0};
getPrimeFactor(n, a);
for (int i = 0; i < 10; i++) {
if (a[i] == 0) break;
cout << a[i] << " ";
}
return 0;
}
```
首先,isPrime函数用于判断一个数是否为质数。如果num小于2,直接返回false;否则,从2开始遍历到num的平方根,如果存在一个数能够整除num,则num不是质数,返回false。如果所有数都不能整除num,则num是质数,返回true。
其次,getPrimeFactor函数用于对一个正整数n进行质因数分解,将结果存放到数组p中。在函数中,从2到n遍历每个数i,如果i是n的因数且i为质数,就将i存入p数组中,并将n除以i,继续寻找下一个质因数。
最后,主函数中调用getPrimeFactor函数,将36作为参数传入,并遍历输出存放结果的数组a。
阅读全文