[C++成长日记]输入一个整数,输出该整数的所有素数因子

土木跑路计科人,记录一下自己的成长

入门菜鸟,请多多指教

题目:输入一个整数,输出该整数的所有素数因子

例如:输入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版权协议,转载请附上原文出处链接和本声明。