算法設計與分析筆記

質因數分解

輸入一個int型十進制正整數,將其分解爲質因素的冪的積,要求表示爲質因數從小到大順序排列的乘積形式。例如:90=2*3ˆ2*5

#include <cstdio>
int main()
{
	int n;
	scanf("%d", &n);
	printf("%d = ", n);
	int b = n, k = 2, cnt; //k代表可能是n的約數,cnt代表每個約數的個數
	while (k <= n)
	{
		cnt = 0;
		while (b % k == 0)
		{
			cnt++;
			b /= k;
		}
		if (cnt == 1)
		{
			if (b > 1) //如果因數個數爲1,且還有因數
			{
				printf("%d*", k);
			}
			else if (b == 1) //如果因數個數爲1,且沒有因數
			{
				printf("%d", k);
				break;
			}
		}
		else if (cnt > 1) 
		{
			if (b > 1) //如果因數個數大於1,且還有因數
			{
				printf("%d^%d*", k, cnt);
			}
			else if (b == 1) //如果因數個數大於1,且沒有因數
			{
				printf("%d^%d", k, cnt);
				break;
			}
		}
		k++;
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章