问题 2487 --最大公约数之和

2487: 最大公约数之和★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 790  解决: 620
[提交][状态][命题人:]

题目描述

下列程序想要求解整数n的所有约数两两之间最大公约数的和对10007求余后的值,试补全程序。

举例来说,4的所有约数是1,2,4。1和2的最大公约数为1,2和4的最大公约数为2,1和4的最大公约数为1,于是答案为1+2+1=4。

#include<iostream>
using namespace std;
const int N=110000, P=10007;
int n;
int a[N],len;
int ans;
void getDivisor()
{
    len=0;
    for(int i=1; ____(1)_____<=n; i++)
    {
        if(n%i==0)
        {
            a[++len]=i;
            if(_____(2)_____!=i) a[++len]=n/i;
        }
    }
}
int gcd(int a,int b)
{
    if(b==0) 
		_____(3)______;
    return gcd(b,_____(4)______);
}
int main()
{
    cin>>n;
    getDivisor();
    ans=0;
    for(int i=1; i<=len; i++)
    {
        for(int j=i+1; j<=len; j++)
        {
            ans=(______(5)______)%P;
        }
    }
    cout<<ans<<endl;
    return 0;
}


输入

一个整数n

输出

按题目意思求最大公约数之和
样例输入
Copy
4
样例输出
Copy
4

提示

来源

[提交][状态]