一道算法题
输入一个正整数n,输出一系列正整数使得他们的和等于n,输出的正整数要求是一个正整数的平方,要求输出的正整数个数最少。
举例:10
系统输出要求:
举例:10=1+9
思路:
循环判断,假如i的平方=n则为该值,假如i的平方小于n且i+1的平方大于n,则将n-i*i的差再进行上面的循环判断。
代码实现
public void function1(){
//输入一个数,假设为99
int x=99;
int remainder=0;
String string = x+"=";
for(int i=0;i<100;i++){
if(i*i==x){
string += x;
break;
}
if((i*i<x)&&((i+1)*(i+1)>x)){
remainder = x-i*i;
string +=i*i+"+";
x = remainder;
i=0;
}
}
Log.v("tag",string);
}