求最大公约数与最小公倍数

//两个数的最大公约数
//两个数的最小公倍数
//将一个正整数分解质因数 –和 2.3.5取余

 #include  <stdio.h>
 int main1()
 {
     // 3,4
     //20
     int v;
     scanf("%d", v);
     int a = 20;
     int start = 1;
     int end = a;
     int result = 0;
     for (i = start; i <= end; i++)
     {
         //求出一个数中的最大质数
         if (a % i == 0 && i % 2 != 0)
         {
             result = i;
         }
     }
     printf(result);
 }
 //最奇葩得求最大公约数和最小公倍数
 int main2()
 {
     //最大公约数
     //输入
     int a = 20;
     int b = 25;
     //声明循环的标志
     int start = 1;
     int end = a < b ? a : b;
     //声明接收最大公约数的遍历
     int maxGongyue = 0;
     for (int i = start; i < end; i++)
     {
         if (a % i == 0 && b % i == 0)
         {
             maxGongyue = i;
         }
     }
     printf(maxGongyue);
     return 0;
 }
 //求最小公倍数
 int main3()
 {
     //最小公倍数
     //输入
     int a = 30;
     int b = 50;
    //声明循环标志
     int start = a * b;
     int end = a > b ? a : b;
     //声明接收最小公倍数的变量
     int minGongbei = 0;
     for (int i = start; i >= end; i--)
     {
         if (i % a == 0 && i % b == 0)
         {
             minGongbei = i;
         }
     }
     printf(minGongbei);
     return 0;
 }

 //判断一个数是不是质数
 int panDuanZhiShu(int s)
 {
     int sign = 1;
      for (int i = 2; i <= process - 1; i++)
      {
          if (s % i == 0)
          {
              sign = 0;
          }
     }
     return sign;
 }

 int main4()
 {
     //分解质因数
     //输入
     int a = 90;
     int start1 = 1;
     int end1 = a;
     int process = a;
     while (1)
     {
         for (int i = start1; i < end; i++)
         {
             if (panDuanZhiShu(i))
             {
                 if (process % i == 0)
                {
                     printf(i);
                     process = process / i;
                     break;
                 }
             }
         }
         //当process=1得时候跳出循环
         if (process == 1)
         {
             break;
         }
     }
 }
/*
 有两整数a和b:

 ① a%b得余数c

 ② 若c=0,则b即为两数的最大公约数

 ③ 若c≠0,则a=b,b=c,再回去执行①

 例如求2715的最大公约数过程为:

 27÷151215÷12312÷30因此,3即为最大公约数
 */
 void main()   /*  辗转相除法求最大公约数 */   
 {   
    int m, n, a, b, t, c;  
    printf("Input two integer numbers:\n");  
    scanf("%d%d", &a, &b);  
    m=a;   n=b;  
    while(b!=0)  /* 余数不为0,继续相除,直到余数为0 */   
    { c=a%b; a=b;  b=c;}  
    printf("The largest common divisor:%d\n", a);  
    printf("The least common multiple:%d\n", m*n/a);  
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值