最大约数个数
可以一个一个求 数据过大时必超时
根据约数和定理:对于一个大于1正整数n可以分解质因数:n=p1a1*p2a2*p3a3*…*pkak,则由约数个数定理可知n的正约数有(a₁+1)(a₂+1)(a₃+1)…(ak+1)个,
#pragma GGC optimize(2)
#include"bits/stdc++.h"
using namespace std;
int a,b;
bool is(int x){
if(x==1)return false;
for(int i=2;i*i<=x;i++){
if(x%i==0)return false;
}
return true;
}
int get(int x){
int ans=1,count=0;
if(is(x))return 2;//如果本身是质数就两个约数
for(int i=2;i*i<=x;i++){
while(x%i==0){//统计每个质因子出现的次数
count++;
x=x/i;
}
ans*=(count+1);
count=0;
}
if(x>1)ans*=2;//如果最后剩下的是个质数,也要乘一下
return ans;
}
int main(){
cin>>a>>b;
int ma=0;
for(int i=b;i>=a;i--){
ma=max(ma,get(i));
}
cout<<ma;
return 0;
}