(忙着A题,总结会慢慢跟上~)
1409: 因子和
Time Limit: 1 Sec Memory Limit: 128 MB
[Submit][Status][Web Board]
Description
求一个数的因子和很简单,所以小明很懒就想让你帮忙算一下区间a到b中哪个数的因子和最大,并输出这个数和他的每个因子。
Input
输入a和b,(0<a<=b<10^6).
Output
输出这个数和他的每个因子(相同情况输出最小的),因子从小到大输出。
Sample Input
1 10
Sample Output
10 = 1 + 2 + 5
AC-code:
#include <stdio.h>
#define M 1000000
int c[M+2];
int main()
{
int i,j;
for(i = 1; i <= M; i++)//类素数筛选法
{
c[i] -= i;//真因子不包括它本身
for(j = i; j <= M; j+=i)
{
c[j] += i;
}
}
int a,b;
while(~scanf("%d%d",&a,&b))
{
int max_1 = c[a],aim = a;
for(int i = a+1; i <= b; i++)
{
if(c[i] > max_1)
{
max_1 = c[i];
aim = i;
}
}
if(aim > 1)
{
printf("%d = 1",aim);
for(int j = 2; j < aim; j++)
if(aim % j ==0) printf(" + %d",j);
}
else
{
printf("0 = 0");
}
printf("\n");
}
return 0;
}