c++实现分解质因数

题目描述

将一个正整数分解质因数。例如:输入90,输出 90=2*3*3*5。

输入

输入数据包含多行,每行是一个正整数n (1<n <100000) 。

输出

对于每个整数n将其分解质因数。

输入样例

90

256

199

输出样例

90=2*3*3*5

256=2*2*2*2*2*2*2*2

199=199

分解质因数听起来既熟悉又陌生,从小学就了解过概念并使用过,但用代码如何实现不得不思考一下。下面重温下什么是质数和合数,质数又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。合数指自然数中除了能被1和本身整除外,还能被其他数(0除外)整除的数。

核心思想:从最小质数开始作为除数(质数满足小于被除数),寻找可以被目标数整除的质数并输出,同时保留商作为下一次运算被除数。

//分解质因数
#include<iostream>
using namespace std;
void prim(int m);
int main()
{
	int n;
	cout << "please input a num:" << endl; 
	cin >> n;
	prim(n);
	return 0;
} 
								//分解质因数函数
void prim(int m) 				//m为目标数值 
{
	int i = 2;   				//从最小质数2开始 
	while(i < m) 				//满足质数作为除数小于商值 
	{
		if(m % i == 0) 			//满足可整除目标数的质数 
		{
			cout << i << "*";  	//输出一个因数 
			m /= i; 			// 更新商值赋给m 
		}
		else 
			i++; 				//未整除时寻找下一除数   
	}
	cout << m; 					//最后一个除数 
		
} 
发布了9 篇原创文章 · 获赞 3 · 访问量 2507

猜你喜欢

转载自blog.csdn.net/mglcms/article/details/104207670