求最大公因子
问题:
(穷举法)求两个数的最大公因子,对于输入的a、b的值,首先确定较小者min,即当a<b时,min=a;当a>b时min=b,然后依次测试min-1,min-2,min-3,....,1,而最先能同时被a,b整除的那个数,就是a和b的最大公因子。一旦找到最大公因子,无需继续测试下去。
1 /*求a,b的最大公因子*/ 2 #include<stdio.h> 3 int main() 4 { 5 int a,b,min,k; 6 do 7 { 8 printf("Enter a,b(>0):"); 9 scanf("%d,%d",&a,&b); 10 }while(!(a>0&&b>0)); 11 min=(a<b)?a:b; 12 for(k=min;k>=1;k--) 13 if(a%k==0&&b%k==0) 14 break; 15 printf("The largest common factor is %d.",k); 16 return 0; 17 } 18 19 20 /*对a,b的两个正整数,输出其所有能够a与b的公因子*/ 21 #include<stdio.h> 22 int main() 23 { 24 int a,b,min,k; 25 do 26 { 27 printf("Enter a,b(>0)"); 28 scanf("%d,%d",&a,&b); 29 }while(!(a>0&&b>0)); 30 min=(a<b)?a:b; 31 for(k=min;k>=1;k--) 32 { 33 if(a%k!=0||b%k!=0) 34 continue; 35 printf("The common factor is %d.\n",k); 36 } 37 return 0; 38 }