zoukankan      html  css  js  c++  java
  • 输入三个数a,b,n,输出a和b不大于n的公倍数的个数

    题:输入三个数a,b,n,输出a和b不大于n的公倍数的所有个数。

    这题的思想是先求得a和b的最大公约数,然后用a和b的积除以最大公约数,得到最小公倍数,再持续加上最小公倍数,直到超过n,记下n的个数。如:8,12,100,最大公约数为4,则最小公倍数为24。则公倍数为:24、48、72、96,即总共有4个。

    代码如下:

     1 #include<iostream>
     2 #include<algorithm>
     3 
     4 using namespace std;
     5 
     6 int main()
     7 {
     8     int a, b, n;
     9     cin >> a >> b >> n;
    10     int minVal = min(a, b);
    11     int maxVal = max(a, b);
    12     int tem = 0;        //最小公倍数
    13     int val = 0;        //最大公约数
    14     
    15     if (maxVal%minVal == 0)
    16         tem = maxVal;
    17     else
    18     {
    19         while (maxVal%minVal != 0)
    20         {
    21             val = maxVal%minVal;
    22             maxVal = minVal;
    23             minVal = val;
    24         }
    25         tem = a*b / minVal;
    26     }
    27 
    28     int count = 1;
    29     while (tem *count<= n)
    30     {
    31         count++;
    32     }
    33     cout <<count-1;
    34     return 0;
    35 }

    还有一种直接的解法

     1 #include<iostream>
     2 #include<algorithm>
     3 
     4 using namespace std;
     5 
     6 int main()
     7 {
     8     int a, b, n;
     9     cin >> a >> b >> n;
    10     int maxVal = max(a, b);
    11     int count = 0;
    12     while (maxVal <= n)
    13     {
    14         if (maxVal%a == 0 && maxVal%b == 0)
    15             count++;
    16         maxVal++;
    17     }
    18     cout << count;
    19     return 0;
    20 }

     以后一定要先想最简单的做法。

    //招商信用

  • 相关阅读:
    ASP.NET MVC4.0+ WebAPI+EasyUI+KnockOutJS快速开发框架 通用权限管理系统
    74.Java异常处理机制
    emmm
    数据库关系代数
    汇编实验二 2进制转16进制
    汇编实验一 显示字符串
    JustOj 1386: 众数的数量
    Codeforces 124A
    Codeforces 456A
    Codeforces 237A
  • 原文地址:https://www.cnblogs.com/love-yh/p/7517946.html
Copyright © 2011-2022 走看看