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;
    }
                

  • 相关阅读:
    并发与并行
    OpenCV 图像集合操作
    C++ 输出时间
    绘制模型图
    检测图像文件是否损坏
    QImage,Mat ,QByteArray转换
    图像拼接3
    图像拼接2】
    图像拼接 Stitcher
    《将博客搬至CSDN》
  • 原文地址:https://www.cnblogs.com/csnd/p/12062608.html
Copyright © 2011-2022 走看看