最多约数问题。正整数 x 的约数是能整除x的正整数,其约数的个数记为div(x),例如div(10)=4。
设 a 和 b 是两个正整数,找出 a 和 b 之间约数个数最多的数 x 的约数个数。
样例输入: 1 36
设 a 和 b 是两个正整数,找出 a 和 b 之间约数个数最多的数 x 的约数个数。
样例输入: 1 36
样例输出: 9
#include<stdio.h>
int main(){
int a,b;//输入的a和b
int num,maxnum=2;//maxnum表示x约数的个数,num表示计算过程中某个是的约数个数
int i,j;
scanf("%d%d",&a,&b); //input a and b
for(i=b;i>=a;i--){ //从大到小遍历
if(i%2==0){ //约数最多的一定是偶数
num=2; //1和i是固有的约数,所以num起始值为2
for(j=2;j<=i/2;j++){ //j代表一个约数
if(i%j==0){
if(j==i/j){ //例如 36=6*6的情况
num++;
}else if(j<i/j){
num+=2;
}else{
break;
}
}
}
if(num>maxnum)
maxnum=num;
}
}
printf("%d",maxnum);
return 0;
}