• 20200803--第n小的质数(奥赛一本通p72 9) (2020-08-03 18:43)


    //自己的解法

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
      int n=0; //录入的数
      int s=0; //每个数可对几个数取余结果为0
      int t=0; //计数器,当t==n就停止
      cout<<"请输入第几小的质数:";
      scanf("%d",&n);
      //下行10000是上限,自己设定的
      for(int x=2;;x++)
        {
          for(int i=1;i<=x;i++)
            {
              if(x%i==0)
                {
                   s++;
                }
            }
          if(s==2)
            {
                t++;
                if (t==n)
                  { 
                     cout<<"最终结果是:"<<x;
                  }
            }
      s=0;
      }
      return 0;
    }

    //书上解法

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
      int n,i,s=0;
      scanf("%d",&n);
      for(i=2;;++i)
        {
          int x=2;
          while(x<=floor(sqrt(i))&&i%x!=0) //判断i是否为素数
            {x++;}

          if(x>floor(sqrt(i)))
            {
              s++;if(s==n)
           {
          printf("%d ",i);break;
         }
       }
      }
    return 0;
    }

    参考资料:

    C++语言有以下几种取整方法: 
        1、直接赋值给整数变量。如: 
        int i = 2.5; 或 i = (int) 2.5; 
        这种方法采用的是舍去小数部分 
        2、C/C++中的整数除法运算符“/”本身就有取整功能(int / int),但是整数除法对负数的取整结果和使用的C编译器有关。 
        3、使用floor函数。floor(x)返回的是小于或等于x的最大整数。如: 
        floor(2.5) = 2 
        floor(-2.5) = -3 
        4、使用ceil函数。ceil(x)返回的是大于x的最小整数。如: 
        ceil(2.5) = 3 
        ceil(-2.5) = -2 
        floor()是向负无穷大舍入,floor(-2.5) = -3;ceil()是向正无穷大舍入,ceil(-2.5) = -2。
  • 相关阅读:
    使用sudo crontab修改Linux系统时间
    Redis缓存雪崩和穿透的解决方法
    设计模式之委托模式
    设计模式之模板模式
    并发编程面试题
    AQS之共享锁实现原理
    AQS之独占锁实现原理
    CentOS 7.1 Bridge启用STP报错"Master connection not found or invalid"
    nginx反向代理docker registry报”blob upload unknown"解决办法
    [转]Linux df 命令不更新磁盘数据空间使用情况的解决办法
  • 原文地址:https://www.cnblogs.com/whcsrj/p/13499025.html
Copyright © 2020-2023  润新知