zoukankan      html  css  js  c++  java
  • hdu5108枚举因子求最小的m

    题意:
         给一个n(<=10Y),然后让找到一个最小的m使得n/m是一个素数.


    思路:
          先用sqrt(n)的时间把所有的因子都求出来,然后在排序,枚举,就行了,这个题目这么做的话,要是仔细算一下时间复杂度估计会跪,但是题目说大数据不多,这种说法的前提下一般临街的时间复杂度都要试一试,还有就是在判断素数和枚举的时候写的别太挫,不然很可能会超时。


    #include<algorithm>
    #include<stdio.h>
    #include<math.h>


    using namespace std;




    int YZ[100000] ,yzs;


    void DB(int now)
    {
       yzs = 0;
       int max = (int)sqrt(now);
       for(int i = 1 ;i <= max ;i ++)
       {
          if(now % i == 0) 
          {
             YZ[++yzs] = i;
             YZ[++yzs] = now / i;
          }
       }
       if(max * max == now)
       yzs --;
    }


    bool jude(int now)
    {
       int max = (int)sqrt(now);
       for(int i = 2 ;i <= max ;i ++)
       if(now % i == 0) return 0;
       return 1;
    }


    int main ()
    {
       int n ,i;
       while(~scanf("%d" ,&n))
       {
          if(n <= 1)
          {
             printf("0 ");
             continue;
          }
          DB(n);
          sort(YZ + 1 ,YZ + yzs + 1);
          int mk = 0;
          for(i = 1 ;i <= yzs && !mk;i ++)
          {
             int now = n / YZ[i];
             if(jude(now))
             {
                printf("%d " ,YZ[i]);
                mk = 1;
             }
          }
          if(!mk) printf("0 ");
       }
       return 0;
    }
                

  • 相关阅读:
    HTML5 中的Nav元素详解
    Gevent中信号量的使用
    MemCache缓存multiget hole详解
    MemCache中的内存管理详解
    Php中的强制转换详解
    Python中类的特殊方法详解
    MemCache的LRU删除机制详解
    AngularJS事件绑定的使用详解
    Php数据类型之整型详解
    HTML基础知识
  • 原文地址:https://www.cnblogs.com/csnd/p/12062607.html
Copyright © 2011-2022 走看看