C 语言实例 - 求两数的最大公约数

C 语言教程 · 2019-02-20 18:56:27

用户输入两个数,求这两个数的最大公约数。

实例 - 使用 for 和 if

#include <stdio.h> int main() { int n1, n2, i, gcd; printf("输入两个正整数,以空格分隔: "); scanf("%d %d", &n1, &n2); for(i=1; i <= n1 && i <= n2; ++i) { // 判断 i 是否为最大公约数 if(n1%i==0 && n2%i==0) gcd = i; } printf("%d 和 %d 的最大公约数是 %d", n1, n2, gcd); return 0; }

运行结果:

输入两个正整数,以空格分隔: 81 153
81 和 153 的最大公约数是 9

实例 - 使用 while 和 if

#include <stdio.h> int main() { int n1, n2; printf("输入两个数,以空格分隔: "); scanf("%d %d",&n1,&n2); while(n1!=n2) { if(n1 > n2) n1 -= n2; else n2 -= n1; } printf("GCD = %d",n1); return 0; }

运行结果:

输入两个数,以空格分隔: 81 153
GCD = 9

实例 - 适用正数和负数

#include <stdio.h> int main() { int n1, n2; printf("输入两个数,以空格分隔: "); scanf("%d %d",&n1,&n2); // 如果输入的是负数,将其转换为正数 n1 = ( n1 > 0) ? n1 : -n1; n2 = ( n2 > 0) ? n2 : -n2; while(n1!=n2) { if(n1 > n2) n1 -= n2; else n2 -= n1; } printf("GCD = %d",n1); return 0; }

运行结果:

输入两个数,以空格分隔: 81 -153
GCD = 9

实例 - 使用递归

#include <stdio.h> int hcf(int n1, int n2); int main() { int n1, n2; printf("输入两个正整数: "); scanf("%d %d", &n1, &n2); printf("%d 和 %d 的最大公约数为 %d", n1, n2, hcf(n1,n2)); return 0; } int hcf(int n1, int n2) { if (n2 != 0) return hcf(n2, n1%n2); else return n1; }

点击查看所有 C 语言教程 文章: https://codercto.com/courses/l/17.html

查看所有标签

Web Analytics 2.0

Web Analytics 2.0

Avinash Kaushik / Sybex / 2009-10-26 / USD 39.99

The bestselling book Web Analytics: An Hour A Day was the first book in the analytics space to move beyond clickstream analysis. Web Analytics 2.0 will significantly evolve the approaches from the fir......一起来看看 《Web Analytics 2.0》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码