zoukankan      html  css  js  c++  java
  • 【编程小题目2】求解素数

    题目:判断101-200之间有多少个素数,并输出所有素数。 

    程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 
    则表明此数不是素数,反之是素数。

    //连续整除法求解素数

    #include <iostream>
    #include <cmath>
    #include <iomanip>
    using namespace std;
     
    int main()
    {
      int i, j, count = 0;
     
      for(i = 101; i <= 200; i++)
      {
        for(j = 2; j <= sqrt(i); j++)
        {
          if( i % j == 0)
          {
            break;
          }
        }
        if(j > sqrt(i))
        {
          count++;
          cout << setw(5) << i;
          if(count % 5 == 0)
          {
            cout << endl;
          }
        }
      }
      cout << endl << "素数总个数为:" << count <<endl;
     
      return 0;
    }
     
     
    //Sieve筛选法求素数
    #include <iostream>
    #include <cmath>
    #include<iomanip>
    using namespace std;

    void setSieveElements(int *SieveElements, int size) // 0-size 设置待筛选数组
    {
      for(int i = 0; i <= size; ++i)
      {
        SieveElements[i] = i;
      }
    }

    void getSieveElemets(int *SieveElements, int SieveLimit, int size)
    {
      int i, j = 0;
      for(i = 2; i < SieveLimit; ++i)
      {
        if(SieveElements[i] != 0) //筛选,0标记非素数
        {
          j = i * i;
        }
        while (j <= size)
        {
          SieveElements[j] = 0;
          j += i;
        }
      }
    }

    void print(const int *SieveElements, int size)
    {
      int count = 0;
      for(int i = 0; i <= size; ++i)
      {
        if(SieveElements[i] >= 101) //计数、输出101-200之间的素数
        {
          count++;
          cout << setw(5) << SieveElements[i];
          if(count % 5 == 0)
          {
            cout << endl;
          }
        }
      }
      cout << endl << "素数总个数为:" << count << endl;
    }


    int main()
    {
      const int size = 200;
      int SieveElements[size + 1];
      const int SieveLimit = (int) sqrt(size);

      setSieveElements(SieveElements, size);
      getSieveElemets(SieveElements, SieveLimit, size);
      print(SieveElements, size);

      return 0;
    }

     
  • 相关阅读:
    网络知识===wireshark抓包,三次握手分析
    网络知识===关于MAC地址和IP不能互相替代,缺一不可的原因
    网络知识===《图解TCP/IP》学习笔记——网络的构成要素
    python基础===获取知乎标题时候,文件编码失败的总结
    Java——新IO 通道
    Java——新IO 缓冲区与Buffer
    Java——UDP
    Java——TCP
    Java——URLEncoder和URLDecoder
    Linux学习笔记<三>
  • 原文地址:https://www.cnblogs.com/FoxShark/p/4435104.html
Copyright © 2011-2022 走看看