21xrx.com
2024-09-20 00:33:30 Friday
登录
文章检索 我的文章 写文章
C++程序:求1到n内素数倒数之和
2023-06-30 07:49:51 深夜i     --     --
C++ 程序 素数 倒数 求和 1到n

如果你学过计算机编程,你可能已经了解到算法的重要性。在编写程序时,算法可以决定程序的效率和实现结果。今天,我们将介绍一个用C++编写的程序,用于计算1到n之间所有素数的倒数之和。

素数是只能被1和自身整除的正整数。计算1到n之间素数的倒数之和可能看起来很简单,但实际上需要用到一些复杂的算法和数学公式。我们使用的算法称为“埃拉托斯特尼筛法”,可以快速筛选出所有素数。

下面是程序的代码:

#include

#include

using namespace std;

int main() {

  int n;

  cin >> n;

  vector primes(n+1, true);

  primes[0] = primes[1] = false;

  for (int i = 2; i*i <= n; i++) {

    if (primes[i])

      for (int j = i*i; j <= n; j += i)

        primes[j] = false;

  }

  double sum = 0;

  for (int i = 2; i <= n; i++) {

    if (primes[i])

      sum += 1.0/i;

  }

  cout << sum << endl;

  return 0;

}

在这个程序中,我们使用了一个名为“vector”的容器,它可以存储各种类型的值,并且可以动态调整它的大小。我们用“vector”来存储1到n中的素数,并将它们全部初始化为“true”。

接下来,我们将所有不是素数的数字标记为“false”,直到n的平方根为止。我们使用两个循环来完成这个过程。第一个循环从2开始,一直到n的平方根。如果primes[i]的值为true,那么我们知道这个数字是素数。在下一个循环中,我们将i的倍数都标记为“false”。

最后,我们遍历1到n的所有数字,并将素数的倒数加起来。注意,我们将1的倒数排除在外,因为它不是素数。

运行程序后,你将看到输出1到n之间素数的倒数之和。这个结果可以用来解决一些数学问题,例如求出无穷级数的和。我们希望这个程序能够帮助你更好地理解算法和数学,并激发你编写更复杂的程序的兴趣。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复