有两个正整数a和b,如果质数c既是a的因子,也是b的因子,则称c是a和b的公共质因数。
求a和b的所有公共质因数之和。
输入
多组案例。一个正整数n,表示案例的数量。(n<=100)
每组案例由两个正整数a和b组成。(a<=1e+8,b<=1e+8)
输出
针对每组案例,输出一个整数,表示a和b的所有公共质因数之和。(不会超出int范围)
每组案例输出完要换行。
#include <iostream>
#include<cmath>
using namespace std;
bool f(int n)
{
if (n < 2)
return false;
for (int i = 2;i <= sqrt(n);i++)
{
if (n % i == 0)
return false;
}
return true;
}
int main()
{
int n;
cin >> n;
for (int i = 0;i < n;i++)
{
int a, b, sum = 0;
cin >> a >> b;
int x = min(a, b);
for (int i = 2;i <= x;i++)
{
if (f(i) && a % i == 0 && b % i == 0)
{
sum += i;
}
}
cout << sum << endl;
}
return 0;
}
oj上超时了是怎么回事