zoukankan      html  css  js  c++  java
  • 找出因子是2,3,5,的至少一个的第k大数

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    //找出因子是2,3,5,的至少一个的第k大数 
    //辗转相除法 
    //2013.05.22 PM
    
    
    #include <stdio.h>
    int isnumber(unsigned long n) //函数判断,是不是只有2、3、5作因子
    {
       unsigned long tempnumber;
       tempnumber=n;
       while(tempnumber%2==0 || tempnumber%3==0 || tempnumber%5==0) //循环判断直到不能整除2、3、5为止
       {
            if(tempnumber%2==0)
               tempnumber=tempnumber/2;  //这几个顺序不能变 
            if(tempnumber%3==0)
               tempnumber=tempnumber/3;
            if(tempnumber%5==0)
               tempnumber=tempnumber/5;
       }
       if(tempnumber==1) //如果是1,则说明经过反复除以2、3、5以后,没有别的因子。则这个数就是我们要的数
         return 1;
       else 
         return 0;
    }
    
    int main()
    {
       unsigned long n=2; //定义变量n
       int i=0; //定义计数量
       cout<<"k值为:"<<endl; 
       int k;
       cin>>k;
       //坑爹的算法来了,穷举
       while(n) //4294967296是unsigned long的上限
       {
          if(isnumber(n))
          {
             i++;
             if(i==k)    //找到第k个数
             {
                break; //后面的语句不执行了 
             }
             n++; //若不是第k大的,虽然也是其因式的值 
          }
          else
             n++;
       }
       //printf("%lu\n",n);
       
       cout<<""<<k<<"大的值是:"<<n<<endl; 
        system("PAUSE");
        return EXIT_SUCCESS;
       
    }
  • 相关阅读:
    Linux systemd & init.d
    windows 气泡提示
    C++17新特性
    Lua & C++
    C++智能指针原理
    C++ Memory Order
    析命令提示符的原理
    设置与获取系统代理信息
    命令查看系统信息
    Linux shell脚本
  • 原文地址:https://www.cnblogs.com/fickleness/p/3092963.html
Copyright © 2011-2022 走看看