算法:
step1:设i为2;
step2:如果a和b都能被i整除,则记下这个i;
step3:i加1后重复第二步,直到i等于a或b;
step4:则曾经记下的最大的能同时整除a和b的i就是最大公约数。
程序:
# include<stdio.h> int main() { int a,b; scanf("%d %d",&a,&b); int ret=0; int min=0; if(a>b){ min=b; }else{ min=a; } for(int i=1; i<=min; i++){ if(a%i==0){ if(b%i==0){ ret = i; } } } printf("%d和%d的最大公约数为%d\n",a,b,ret); return 0; }改进:运用逻辑表达式
# include<stdio.h> int main() { int a,b; scanf("%d %d",&a,&b); int ret=0; int min=0; for(int i=1; i<=a&&i<=b; i++){ if(a%i==0&&b%i==0){ ret = i; } } printf("%d和%d的最大公约数为%d\n",a,b,ret); return 0; }