算法描述:输入正整数num和正整数times,输出正整数a,b满足num = b*a^times,其实质就是对一个N次根式进行化简
样例输入:
input:
45 2
样例输出:
output:
3 5
废话不多说,先上原始代码:
需要注意的是,我只输出了a,不过b只需要根据a来计算即可,因此我们只需关注如何计算a。根据这个思路,此问题转化成求num的最大完全N次方因数,所以想到将num进行质因数分解。然后根据每个质因数的次数将其剥出根号。
第一步:分解质因数
首先完成对num的质因数分解。具体操作就是:建立一个for循环,让变量i从2开始自加,如果num除以i的余数是0,即i是num的因数,则触发for循环内部的while循环让num不断地去自除以i,并输出i。这样子一直到i不整除num为止。如果num到了1,则说明质因数分解结束
for(int i = 2;num>1;i++){
while(num % i==0){