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

     
  • 相关阅读:
    npm安装elasticsearch-reindex
    Linux14_文本编辑器与终端配置
    Linux13_群组的管理和文件权限的管理
    Linux12_用户和权限
    Linux11_文件及目录以及其相关的组织命令
    Linux10_常用命令和操作
    Linux9_安装Linux系统
    基础概念——什么是POSIX
    C++Review21_宏和常量
    C++Review20_C++函数高级特性(重载、内联、const和virtual)
  • 原文地址:https://www.cnblogs.com/FoxShark/p/4435104.html
Copyright © 2011-2022 走看看