算法设计与分析笔记

质因数分解

输入一个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++;
	}
}

猜你喜欢

转载自blog.csdn.net/WxqHUT/article/details/105854699