#15858: 為甚麼會 killed


d10732114@gapps.fg.tp.edu.tw (d10732114)


#include <iostream>
using namespace std;

int main()
{
long long int n,m,a;
while (cin>>n>>m)
{
for (int i=1; i<=m&&i<=n; i++)
{
if(n%i==0&&m%i==0)
a=i;
}

if(n==0&&m==0)
break;

cout <<a<< endl;
}

}

#15863: Re:為甚麼會 killed


rollfc (點石學園 StoneCampus)


#include
using namespace std;

int main()
{
long long int n,m,a;
while (cin>>n>>m)
{
for (int i=1; i<=m&&i<=n; i++)
{
if(n%i==0&&m%i==0)
a=i;
}

if(n==0&&m==0)
break;

cout <<a<< endl;
}

}

你的作法是從1開始找到 min(m,n) 之間找到可以被m和n整除的數字

但是當m=n=1000000000時搜尋範圍過大,顯然這個方法會超時

請使用輾轉相除法來處理這個問題