输入正整数数n,求gcd(1,2)+gcd(1,3)+gcd(2,3)+…+gcd(n-1,n),即所有满足1<=i<j<=n的数对(i,j)所对应的gcd(i,j)之和。
例如,当n=10时答案为67,当n=100时,答案为13015。
#include <stdio.h>
//输入正整数数n,
//求gcd(1,2)+gcd(1,3)+gcd(2,3)+…+gcd(n-1,n),
//即所有满足1<=i<j<=n的数对(i,j)所对应的gcd(i,j)之和。
//例如,当n=10时答案为67,当n=100时,答案为13015。
int gcd(int m,int n)
{
int temp;
if(m<n){temp=m;m=n;n=temp;}
while(m%n){
temp=n;
n=m%n;
m=temp;
}
return n;
}
int main()
{
int n;
int i,j;
int sum=0;
printf("input the number:");
scanf("%d",&n);
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
sum=sum+gcd(i,j);
}
printf("the result is %d.\n",sum);
return 0;
}