问题描述
给定一个整数x,定义g(x)是x的因子个数。现在给你一个整数区间[a,b],请你求出该区间的x使g(x)最大。
输入
第一行是一个整数n,接下来总共n行。
每行两个正整数a和b, 1<=a<=b<=5000,表示闭区间[a,b]。
输出
对每组测试数据,在单独的一行中输出一个整数,即对应的区间因子最多的数,如果满足条件有多个,则输出其中最小的数。
输入样列
3
2 3
1 10
47 359
输出样例
2
6
240
#include<stdio.h>
int main()
{
int t;
int a,b,max,z,num;
int i,j;
scanf("%d",&t);
while(t--){
max=0;
z=0;
scanf("%d%d",&a,&b);
for(i=a;i<=b;i++){
for(j=1;j<i/2;j++){
if(i%j==0) z++;
}
if(z>max){
max=z;
num=i;
}
}
printf("%d\n",num);
}
return 0;
}
稍微改了一下,你对比着看看
#include <stdio.h>
int main()
{
int t;
int a, b, max, z, num;
int i, j;
scanf("%d", &t);
while (t--)
{
max = 0;
scanf("%d%d", &a, &b);
for (i = a; i <= b; i++)
{
z = 0;
for (j = 1; j <= i/2; j++)
{
if (i % j == 0)
z++;
}
if (z > max)
{
max = z;
num = i;
}
}
printf("%d\n", num);
}
return 0;
}
主要是z = 0的位置不对