1. 公因數x,就是一組數字的共同因數,這組數字除以x都餘0
2. 公因數x,絕對不可能大於這組數字中最小的數字
3. 最大公因數,就是符合上述條件的n個x中,數值最大的
經過以上的思考,就可以用迴圈循序測試法寫出程式了
#include <iostream>
int common_divisor(int a, int b, int c)
{
int min=a;
if (b<min) //找出 a b c 中最小的值做為測試起始值,避免多餘的測試
min=b;
if (c<min)
min=c;
for(int x=min; x>0; x--) //因要找出符合條件的最大值,所以由大往小比對
{
if(a%x==0 && b%x==0 && c%x==0) //測試a b c 除以x是否都餘0
return x; //完全比對符合則回傳x,即a b c的最大公因數
}
return 0; //不可能
}
int main()
{
int a, b, c;
std::cout << "請輸入3正整數:";
std::cin >> a >> b >> c;
std::cout << "最大公因數=" << common_divisor(a,b,c);
return 0;
}
int common_divisor(int a, int b, int c)
{
int min=a;
if (b<min) //找出 a b c 中最小的值做為測試起始值,避免多餘的測試
min=b;
if (c<min)
min=c;
for(int x=min; x>0; x--) //因要找出符合條件的最大值,所以由大往小比對
{
if(a%x==0 && b%x==0 && c%x==0) //測試a b c 除以x是否都餘0
return x; //完全比對符合則回傳x,即a b c的最大公因數
}
return 0; //不可能
}
int main()
{
int a, b, c;
std::cout << "請輸入3正整數:";
std::cin >> a >> b >> c;
std::cout << "最大公因數=" << common_divisor(a,b,c);
return 0;
}
沒有留言:
張貼留言