反素数 这样写错哪里了

问题描述
给定一个整数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的位置不对