题目:http://acm.gdufe.edu.cn/Problem/read/id/1049
因子数
Time Limit: 2000/1000ms (Java/Others)
Problem Description:
已知g(x)是x的因子个数,现求一个整数区间[a,b],请你求出该区间的x使g(x)最大。
Input:
第一行输入n,接下来n行测试数据 输入包括a,b, 1<=a<=b<=5000,表示闭区间[a,b].
Output:
输出为一个整数,为该区间因子最多的数.如果满足条件有多个,则输出其中最小的数.
Sample Input:
3 2 3 1 10 47 359
Sample Output:
2 6 240
思路:在区间内一个个的判断其因数有多少个,把较多的保留下来
难度:简单
代码:
1 #include<stdio.h> 2 int main() 3 { 4 int n,a,b,c,d,i; 5 int divi(int n); 6 while(~scanf("%d",&n)) 7 { 8 while(n--) 9 { 10 d=c=0; 11 scanf("%d%d",&a,&b); 12 for(i=a;i<=b;i++) 13 { 14 if(divi(i)>d) 15 { 16 d=divi(i); 17 c=i; 18 } 19 } 20 printf("%d ",c); 21 } 22 } 23 return 0; 24 } 25 26 int divi(int n) 27 { 28 int i,c=0; 29 for(i=1;i<=n;i++) 30 { 31 if(n%i==0) 32 c++; 33 } 34 return c; 35 }