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;
}
博客要求计算区间a到b中因子和最大的数,并输出该数及其每个因子。输入为区间a和b(0<a<=b<10^6),输出该数和其从小到大排列的因子,相同情况输出最小的数,还给出了示例输入输出及代码。
1022

被折叠的 条评论
为什么被折叠?



