我的思路是这样的:比如12和16这两个数。先理解一下概念,什么叫最大公约数。就是12有很多个因数,16也有很多个因数,这两堆因数中有一些重合的因数,在这些重合的因数中找到那个最大的。那么最大公约数一定是两个数的公约数,且最大公约数一定再12的因数中寻找的。OK,我们先对12求除所有的因数,那么需要一个循环,在这个循环中每次拿到12的一个因数,看它是不是16的一个因数,如果是,那么说明这个因数就是12和16的一个公因数,暂时把最大公约数设置为这个公因数,然后进行下次循环,如果能找到12和16的又一个公因数,那么就把这个公因数设置为最大公约数,直到循环结束,直接输出公因数的值就是最大公约数。

int main()
{
/*
题目:求两个数的最大公约数
*/ int a = 0;
int b = 0;
int i = 1;
int great_common_divisor = 1; scanf_s("%d %d",&a,&b); if (a%b == 0 || b % a == 0)//如果能直接整除,那么较小的那一个就是最大公约数
{
if (a > b)
{
printf("greatest common divisor is %d",b);
}
else
{
printf("greatest common divisor is %d",a);
} }
else
{
while(i<=a)
{
if (a%i == 0)//等于0说明找到了a的一个因数i
{
if (b%i == 0)//等于0说明找到了a和b的一个公因数
{
//把这个公因数暂时设置为最大公约数
great_common_divisor = i;
} }
i++;
}
//循环结束之后,最后一次修改的那个公因数就是最大公约数
printf("greatest common divisor is %d",great_common_divisor);
} }

  

c语言实践:求两个数的最大公约数的更多相关文章

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

    C 语言实例 - 求两数的最大公约数 用户输入两个数,求这两个数的最大公约数. 实例 - 使用 for 和 if #include <stdio.h> int main() { int n ...

  2. C语言辗转相除法求2个数的最小公约数

    辗转相除法最大的用途就是用来求两个数的最大公约数. 用(a,b)来表示a和b的最大公约数. 有定理: 已知a,b,c为正整数,若a除以b余c,则(a,b)=(b,c). (证明过程请参考其它资料) 例 ...

  3. python 函数求两个数的最大公约数和最小公倍数

    1. 求最小公倍数的算法: 最小公倍数  =  两个整数的乘积 /  最大公约数 所以我们首先要求出两个整数的最大公约数, 求两个数的最大公约数思路如下: 2. 求最大公约数算法: 1. 整数A对整数 ...

  4. 求两个数的最大公约数&求N个数的最大公约数

    一.求两个数的最大公约数 如何编程计算N个数的最大公约数(Greatest common divisor)呢?第一想法那便是两两计算,但是往往最简单的想法是不怎么靠谱的.下面用递归来解决.递归有一大好 ...

  5. 【C语言】求两个数中不同的位的个数

    //求两个数中不同的位的个数 #include <stdio.h> int count_different(int a, int b) { int count = 0; int c = a ...

  6. C++中用辗转相除法求两个数的最大公约数和最小公倍数

    两个数的最大公约数:不能大于两个数中的最小值,算法口诀:小的给大的,余数给小的,整除返回小的,即最大公约数,(res=max%min)==0?  max=min,min=res return min; ...

  7. 求两个数的最大公约数(Euclid算法)

    求两个数 p 和 q 的最大公约数(greatest common divisor,gcd),利用性质 如果 p > q, p 和 q 的最大公约数 = q 和 (p % q)的最大公约数. 证 ...

  8. C++扬帆远航——14(求两个数的最大公约数)

    /* * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:gongyueshu.cpp * 作者:常轩 * 微信公众号:W ...

  9. Java数据结构与算法之---求两个数的最大公约数(欧几里得算法)

    一个简单的小算法来获取两个数的最大公约数, public class Test { public static void main(String[] args) { long result = gcd ...

随机推荐

  1. 分布式缓存之memcached--命令测试

    1. 启动Memcache常用参数 -p <num> 设置TCP端口号(默认设置为: ) -U <num> UDP监听端口(默认: , 时关闭) -l <ip_addr& ...

  2. 51nod 1012 最小公倍数LCM

    输入2个正整数A,B,求A与B的最小公倍数. 收起   输入 2个数A,B,中间用空格隔开.(1<= A,B <= 10^9) 输出 输出A与B的最小公倍数. 输入样例 30 105 输出 ...

  3. 关于niosii不同版本的ip核不兼容的问题

    这次用到网上下载的一个12.0版本的ip核,使用qsys做的,而我的开发环境是10.1的,sopc是用的sopcbuilder做的,下载下来的ip核添加新组建后,会报错,采取的做法是对比我的10.1版 ...

  4. sqlalchemy的基本的使用

    参考链接:http://www.techweb.com.cn/network/system/2016-10-11/2407638.shtml http://www.cnblogs.com/renfan ...

  5. 软件开发中IT用语-日文和英文对照版

    開発工程 † 要件定義…Requirement Definition (Analyze) 外部設計…External Design 内部設計…Internal Design 開発…Coding テスト ...

  6. shell中把大写字母转换成小写字母

    shell中把大写字母转换成小写字母 参考:http://www.jb51.net/article/40257.htm echo "AABBCC" | tr "[:upp ...

  7. Nginx 改变错误日志打印级别

    Nginx 改变错误日志打印级别 user  root;worker_processes  2; worker_rlimit_nofile 10240;error_log logs/nginx_err ...

  8. (转)oracle嵌套表示例

    本文转载自:http://www.cnblogs.com/gisdream/archive/2012/04/13/2445291.html ----嵌套表:就是把一个表中的字段定义为一个表,这个字段表 ...

  9. java动态画圈圈。运用多线程,绘图

    总结:只是意外的收获吧.之前一篇是老师教的,一个点,从底层开始升起,到鼠标按下的地方开始画圈圈, 现在改变了一下,因为点上升的一个循环和画圈的循环是分开的 现在让点点自己跑,并且边跑边画圈.而且在fo ...

  10. PL/SQL本地远程连接数据库

    记录自己在开发中只用一次,但是容易忘记的问题,PL/SQL-ORACLE配置远程数据库访问: 1,下载PL/SQL连接工具,链接: https://pan.baidu.com/s/1kVeeLNp 密 ...