Description
求一个数的因子和很简单,所以小明很懒就想让你帮忙算一下区间a到b中哪个数的因子和最大,并输出这个数和他的每个因子。
Input
输入a和b(0<a<=b<10^6).
Output
输出这个数和他的每个因子(相同情况输出最小的),因子从小到大输出。
Sample Input
1
10
Sample Output
10 = 1 + 2 + 5
代码
#include<bits/stdc++.h>
#define MAX 1000005
using namespace std;
int num[MAX];
int main()
{
int i,j,a,b,up;
up=MAX+5;
//求因素和算法
for(i=1;i<=up;i++)
{
num[i]-=i;
for(j=i;j<=up;j+=i)
{
num[j]+=i;
}
}
while(~scanf("%d%d",&a,&b))
{
int maxl=a;
for(i=a+1;i<=b;i++)
{
if(num[maxl]<num[i])
maxl=i;
}
printf("%d = 1",maxl);
for(i=2;i<=maxl/2;i++)
{
if(maxl%i==0)
printf(" + %d",i);
}
printf("\n");
}
return 0;
}