最多约数问题问题描述:正整数x的约数是能整除x的正整数。正整数的约数个数记为div(x),例如,1,2,5,10都是正整数10的约数,且div(10)=4。设a和b是2个正整数,a<=b,找出a和b之间约数个数最多的数算法设计:对于给定的2个正整数a<=b,计算a和b之间约数个数最多的数数据输入:输入数据由文件名为input.txt提供。文件的第一行有两个正整数a和b结果输出:若找到a和b之间约数个数最多的数是x,则将div(x)输出到文件output.txt
#include<iostream>
#include<fstream>
#include<sstream>
#include<string>
using namespace std;
int f(int n)
{
int counter=2;
for(int i=2;i<=n/2;i++)
{
if(n%i==0)
counter++;
}
return counter;
}
int g(int a,int b)
{
int max=1;
for(int i=a;i<=b;i++)
{
if(f(i)>max)
{
max=f(i);
}
}
return max;
}
int main()
{
ifstream in("/home/ying/input.txt");
ofstream out("/home/ying/output.txt");
int a,b;
string s;
getline(in,s);
istringstream is(s);
is>>a;
is>>b;
out<<g(a,b)<<endl;
in.close();
out.close();
}