土木跑路计科人,记录一下自己的成长
入门菜鸟,请多多指教
题目:输入一个整数,输出该整数的所有素数因子
例如:输入120,输出为2、2、2、3和5
分析:求输入数的最大约数,然后用输入数除于最大约数得出质因子;再把最大约数变成输入数重复...直到输入数本身为质数
by gzhu_fwm
#include <iostream>
using namespace std;
int judge(int num);//判断是否是质数
int factor(int num);//求一个数的最大因子
void primefactor(int num);//输出所有素数因子
int main() {
cout << "输入一个整数,程序将输出该整数的所有素数因子:";
int num; cin >> num;
cout << "所有素数因子为:";
primefactor(num);
}
int judge(int num)//判断是否是质数
{
for (int i = num - 1; i > 1; i--)
{
if (num != 2 && num % i == 0) return 0;
if (num == 2 && i == 2) return 1;
}
}
int factor(int num)//求一个数的最大因子
{
if (judge(num)) return num;
for (int i = num - 1; num > 1; i--) if (num % i == 0) return i;
}
void primefactor(int num)//输出所有素数因子
{
int temp = factor(num);
if (temp != num)
{
cout << num / temp << " ";
primefactor(temp);
}
else cout << num << endl;//如果数字的因子是本身直接输出
}版权声明:本文为qq_30799527原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。