题目:
桐桐想把一个自然数N分解成k个大于1的自然数相乘的形式,要求这K个数按从小到大排列,而且除了第K个数之外,前面(K-1)个数是N分解出来的最小自然数。例如:N=24,K=2时,输出为24=2*12,而不是24=4*6;如N=3,K=1时,3=3;N=3,K=2时,输出则为“No answer!”。你能帮助她吗?
输入:
24 2
输出:
24=2*12
代码:
#include<bits/stdc++.h>
using namespace std;
int n,k,i,t,l=2,s=1,a[1000];
int main(){
cin>>n>>k;
t=n;
while(s<k){
if(n%l==0){
a[s]=l;
n/=l;
s++;
}
else
l++;
if (n==1 || l>n/2){
cout <<"No answer!";
return 0;
}
}
cout <<t <<"=";
for (i=1;i<k;i++)
{
cout <<a[i] <<"*";
}
cout <<n;
return 0;
}