精华内容
下载资源
问答
  • 求两个数最大公约数

    2019-02-09 23:07:59
    求两个数最大公约数 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int maxfactor(int x, int y){  int i = 1;  int max = 1;  while (i <= x&&...

    求两个数的最大公约数
    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    int maxfactor(int x, int y){
     int i = 1;
     int max = 1;
     while (i <= x&&i <= y){
      if (x%i == 0 && y%i == 0){
       max = i;
      }
      i++;
     }
     return max;
    }
     int main(){
      int num1 = 0;
      int num2 = 0;
      printf(“请输入两个数\n”);
      scanf("%d %d", &num1, &num2);
     int max = maxfactor(num1,num2);
      printf("%d", max);
      system(“pause”);
      return 0;
     }

    展开全文
  • 主要介绍了Python自定义函数实现求两个数最大公约数、最小公倍数,结合实例形式分析了Python求解两个数最大公约数与最小公倍数相关原理与算法实现技巧,需要的朋友可以参考下
  • 求两个数最大公约数,可以用四种方法,分别是暴力穷举法(不适用于大数字)、辗转相除法(线性代数)、更相减损法(九章算术)、stein算法(Stein算法跟更相减损术很像,而且只有比较、移位、减法,非常适合用FPGA...

    一、程序描述
    求两个数最大公约数,可以用四种方法,分别是暴力穷举法(不适用于大数字)、辗转相除法(线性代数)、更相减损法(九章算术)、stein算法(Stein算法跟更相减损术很像,而且只有比较、移位、减法,非常适合用FPGA实现。)
    二、程序要点
    1、暴力穷举法,由于是求最大公约数,所以从大到小求较为适用。利用system()函数清楚屏幕。

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include<stdlib.h>
    int main() 
    {
    	int a = 0;
    	int b = 0;
    	printf("请输入两个整数:");
    	scanf_s("%d%d", &a, &b);
    	//vs更安全的函数
    	if (a >= b) 
    	//谁小穷举到谁为止,从大到小试
    	{
    		int i = 0;
    		for (i = b; i >= 1; i--) 
    		{
    			if (a % i == 0 && b % i == 0) 
    			{
    				system("cls");
    				printf("这两个数的最大公约数为:%d\n", i);
    				break;
    			}
    		}
    	}
    	else 
    	{
    		int j = 0;
    		for (j = a; j >= 1; j--) 
    		//谁小穷举到谁,从大到小试
    		{
    			if (a % j == 0 && b % j == 0) 
    			{
    				system("cls");
    				printf("这两个数最大公约数为:%d\n", j);
    				break;
    			}
    		}
    	}
    	system("pause");
    	return 0;
    }
    

    2、辗转相除法
    线性代数方法,用大数对小数求余,若余数为0,则除数为最大公约数。若余数不为0,将此余数作为除数,小数作为被除数,重新求余,直到余数为0为止。此时的最大公约数为余数。这个方法比暴力穷举法效率高很多。

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include<stdlib.h>
    int main() 
    {
    	int a = 0;
    	int b = 0;
    	printf("请输入两个整数:");
    	scanf_s("%d%d", &a, &b);
    	if (a >= b) 
    	{
    		int c = a % b;
    		while (c != 0) 
    		{
    			a = b;
    			b = c;
    			c = a % b;
    		}
    		system("cls");
    		printf("最大公约数为:%d\n", b);//辗转相除法余数为0前一个数,余数和这个数辗转相处
    	}
    	else 
    	{
    		int d = b % a;
    		while (d != 0) 
    		{
    			b = a;
    			a = d;
    			d = b % a;
    		}
    		system("cls");
    		printf("最大公约数为:%d\n", a);//辗转相除法余数为0前一个数,余数和这个数辗转相处
    	}
    	system("pause");
    	return 0;
    }
    

    3、更相减损法
    两个数如果相等,那么公约数为他们中的一个,当两个数不相等时,用大数减小数得到的差和之前的那个较小的数再次相减,直到两个数相等,得到最大公约数。这个程序的代码量较少。

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include<stdlib.h>
    int main() 
    {
    	int a = 0;
    	int b = 0;
    	printf("请输入两个整数:");
    	scanf_s("%d%d", &a, &b);//vs更安全
    	while ((a - b) != 0) 
    	{
    		if (a > b) 
    		{
    			a = a - b;
    		}
    		else 
    		{
    			b = b - a;
    		}
    	}
    	system("cls");
    	printf("最大公约数为:%d\n", b);
    	system("pause");
    	return 0;
    }
    

    4、stein算法
    在上述2、3两种方法的基础上进行更多的优化,有了stein算法,只有比较、移位、减法或者求余,更加的便捷。
    用到了几个概念,惰性运算,移位等于除以二,和1求&的关系

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
    	int a = 0;
    	int b = 0;
    	printf("请输入两个整数:");
    	scanf_s("%d%d", &a, &b);
    	int gcd = 0;//gcd最大公约数
    	int k = 1;
    	while ((!(a & 1)) && (!(b & 1)))//&&是惰性运算,当前面为假的时候就不执行后面了,||也是惰性运算,如果前面为真就不执行后面了。
    	{
    		k <<= 1;//用k记录全部公因子2的乘积 乘以2;
    		a >>= 1;//2进制位移一个单位就是除以2
    		b >>= 1;
    	}
    	while (!(a & 1))//偶数和1&得到的是0,奇数是1
    		a >>= 1;
    	while (!(b & 1))
    		b >>= 1;
    	if (a < b)
    	{
    		a ^= b, b ^= a, a ^= b;//交换,使a为较大数; 
    	}
    	while (a != b)
    	{
    		a -= b;
    		if (a < b)
    		{
    			a ^= b, b ^= a, a ^= b;//交换
    		}	
    	}
    	gcd = k * a;
    	system("cls");
    	printf("最大公约数为:%d\n", gcd);
    	system("pause");
    	return 0;
    }
    
    展开全文
  • 主要介绍了Python基于递归和非递归算法求两个数最大公约数、最小公倍数,涉及Python递归算法、流程循环控制进行数值运算相关操作技巧,需要的朋友可以参考下
  • 本文实例讲述了Python自定义函数实现求两个数最大公约数、最小公倍数。分享给大家供大家参考,具体如下:1. 求最小公倍数的算法:最小公倍数 = 两个整数的乘积 / 最大公约数所以我们首先要求出两个整数的最大公约数, ...

    本文实例讲述了Python自定义函数实现求两个数最大公约数、最小公倍数。分享给大家供大家参考,具体如下:

    1. 求最小公倍数的算法:

    最小公倍数  =  两个整数的乘积 /  最大公约数

    所以我们首先要求出两个整数的最大公约数, 求两个数的最大公约数思路如下:

    2. 求最大公约数算法:

    ① 整数A对整数B进行取整, 余数用整数C来表示    举例: C = A % B

    ② 如果C等于0,则C就是整数A和整数B的最大公约数

    ③ 如果C不等于0, 将B赋值给A, 将C赋值给B ,然后进行 1, 2 两步,直到余数为0, 则可以得知最大公约数

    3. 程序代码实现如下:

    #!/usr/bin/env python

    # coding:utf-8

    def fun(num1, num2): # 定义一个函数, 两个形参

    if num1 < num2: # 判读两个整数的大小,目的为了将大的数作为除数,小的作为被除数

    num1, num2 = num2, num1 # 如果if条件满足,则进行值的交换

    vari1 = num1 * num2 # 计算出两个整数的乘积,方便后面计算最小公倍数

    vari2 = num1 % num2 # 对2个整数进行取余数

    while vari2 != 0: # 判断余数是否为0, 如果不为0,则进入循环

    num1 = num2 # 重新进行赋值,进行下次计算

    num2 = vari2

    vari2 = num1 % num2 # 对重新赋值后的两个整数取余数

    # 直到 vari2 等于0,得到最到公约数就退出循环

    vari1 /= num2 # 得出最小公倍数

    print("最大公约数为:%d" % num2) # 输出

    print("最小公倍数为:%d" % vari1) # 输出

    fun(6, 9)

    运行结果:最大公约数为:3

    最小公倍数为:18

    运行结果截图:

    PS:这里再为大家推荐一款本站相关在线工具供大家参考:

    在线最小公倍数/最大公约数计算工具:http://tools.jb51.net/jisuanqi/gbs_gys_calc

    更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

    希望本文所述对大家Python程序设计有所帮助。

    您可能感兴趣的文章:Python自定义函数的创建、调用和函数的参数详解Python def函数的定义、使用及参数传递实现代码Python函数中定义参数的四种方式实例讲解Python中函数的调用与定义Python函数可变参数定义及其参数传递方式实例详解Python中自定义函数的教程python简单的函数定义和用法实例Python中scatter函数参数及用法详解python进阶教程之函数参数的多种传递方法python函数参数*args**kwargs用法实例Python函数参数类型*、**的区别Python函数的定义方式与函数参数问题实例分析

    展开全文
  • public class BigGys {public static void main(String[] args) {System.out.println("请输入第一个数m的值");Scanner sc = new Scanner(System.in);int m = sc.nextInt(); //定义第一个数并从键盘获取Syste...

    import java.util.Scanner;

    public class BigGys {

    public static void main(String[] args) {

    System.out.println("请输入第一个数m的值");

    Scanner sc = new Scanner(System.in);

    int m = sc.nextInt(); //定义第一个数并从键盘获取

    System.out.println("请输入第二个数n的值");

    Scanner sca = new Scanner(System.in);

    int n = sca.nextInt(); //定义第二个数并从键盘获取

    int temp; //定义公约数

    temp = n; //给公约数赋初值

    if (m % temp == 0) {

    System.out.println("m n的最大公约数为:" + n);

    } else {

    for (; temp > 0; temp--) {

    if (m % temp == 0 && n % temp == 0) {

    System.out.println("m n 的最大公约数为:" + temp);

    break;

    }

    }

    }

    }

    }

    展开全文
  • 问:求两个数最大公约数,最小公倍数 解题思路: 我们不断地尝试会发现最大公约数,最小公倍数的规律:两个数的乘积 / 最大公约数 = 最小公倍数 因此,我们的代码有如下设计过程: 代码示例: #define _...
  • Java辗转相除求两个数最大公约数和小公倍数 import java.util.Scanner; public class test15 { public static void main (String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()) { ...
  • 本文实例讲述了Python自定义函数实现求两个数最大公约数、最小公倍数。分享给大家供大家参考,具体如下:1. 求最小公倍数的算法:最小公倍数 = 两个整数的乘积 / 最大公约数所以我们首先要求出两个整数的最大公约数, ...
  • Python自定义函数实现求两个数最大公约数、最小公倍数示例发布时间:2020-09-02 07:09:25
  • 算法:求两个数最大公约数 原来这是欧几里德先生的发明,无知了,在此记录。 #Python 求两数最大公约数 def gcd(a,b): if b == 0: return a return gcd(b,a%b) 查了资料才明白,惭愧,理解方法: ...
  • 求两个数最大公约数,欧几里得算法,这两种方法除第一种可以避免除数为零的情况,两者有什么区别?谢谢 public static int gcd(int p, int q) { if (q == 0) return p; int r = p % q; return gcd(q, r) ; } ...
  • 本文实例讲述了Python自定义函数实现求两个数最大公约数、最小公倍数。分享给大家供大家参考,具体如下:1. 求最小公倍数的算法:最小公倍数 = 两个整数的乘积 / 最大公约数所以我们首先要求出两个整数的最大公约数, ...
  • 欧几里得算法,把a,b的最大公约数转换为b,a%b的最大公约数问题,不断重复该过程,直到缩小成某个非零数与零的最大公约数,则该非零数即为所。 例子:PTA基础编程题目集 7-24 约分最简分式 #include <...
  • 求两个数最大公约数,利用欧几里德算法,辗转相除法。详细内容看资料,留作备份。
  • 本文实例讲述了Python自定义函数实现求两个数最大公约数、最小公倍数。分享给大家供大家参考,具体如下:1. 求最小公倍数的算法:最小公倍数 = 两个整数的乘积 / 最大公约数所以我们首先要求出两个整数的最大公约数, ...
  • 求两个数最大公约数,有三种方法,分别是:短除法,辗转相除法,更相减损法。短除法:运用短除法找到两个数的最大公约数,具体过程是逐步找出两个数的所有公约数,再把这些公约数累乘起来,就得到两个数的最大公...
  • python没看多少啊~ 都怪那个工程实践呀、、强度这么大、、、其实也有做很多工程,在eclipse里面做的,但是觉得没必要都贴出来~不过呢,我今天还算是有点点小收获,想记下来留个纪念、、求两个数最大公约数和最小公...
  • //求两个数最大公约数 public class SuanFa1 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int a=sc.nextInt(); int b=sc.nextInt(); Sys
  • 给定两个数两个数最大公约数 最大公约数,也称最大公因数、最大公因子,指两个或多个整数共有约数中最大的一个。求解的方式比较多,暴力穷举、辗转相除法、更相减损法、Stein算法。 1.暴力穷举法 如果大数...
  • div= [] for i in range(1,min(m,n)+1): if max(m,n)%i==0 and min(m,n)%i==0: ... print("{}和{}的最大公约数是{}".format(m,n,div[0])) x=int(input("num1:")) y=int(input('num2:')) maxdiv(x,y)...
  • 编写一个子函数fn1,用来求两个正整数的最大公约数:编写一个函数fn2,用来求两个正整数的最小公倍数:编写主函数,从键盘读入两个正整数,分别调用fn!和f几2,计算并输出这两个数最大公约数和最小公倍数d测试要点:离数...
  • {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台;社区覆盖了云计算、大数据、人工智能、...
  • 用穷举法求两个数最大公民公约数,希望可以帮到大家。
  • 下面写的是一个用辗转相除法求两个数公约数的代码,我们先来了解什么是辗转相除法。  举个例子:求128 和48的最小公约数  辗转相除法就是用一个数模上另一个数(如a%b)的余数如果等于零,则b为两数最小公约数...
  • 两个数最大公约数和最小公倍数 import java.util.Scanner; public class CommonDivisorMaxMultipleMin { public static void main(String[] args) { System.out.print("请输入两个数:"); Scanner scan ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,372
精华内容 2,148
关键字:

求两个数最大公约数