C++程序:求1到n之间所有素数的和
在这个问题中,我们给定一个数字n。我们的任务是创建一个C++程序来求1到n之间所有素数的和。
素数是指只有两个因数的数。这两个因数分别是该数本身和1。
让我们举个例子来理解这个问题
输入
n = 15
输出
41
解释
1到15之间的素数是2、3、5、7、11、13。它们的和是41。
解决方案
解决这个问题的一个简单方法是使用循环,检查每个数字是否为素数,并将所有素数加起来。
要检查一个数字i是否为素数,我们可以循环从i到i/2。检查是否存在可以整除i的数字。如果存在,则该数字不是素数。
程序演示了我们解决方案的工作原理
示例
#include <iostream>
using namespace std;
bool isPrime(int n){
for(int i = 2; i < n/2; i++){
if(n%i == 0){
return false;
}
}
return true;
}
int findPrimeSum(int n){
int sumVal = 0;
for(float i = 2; i <= n; i++){
if(isPrime(i))
sumVal += i;
}
return sumVal;
}
int main(){
int n = 15;
cout<<"The sum of prime number between 1 to "<<n<<" is "<<findPrimeSum(n);
return 0;
}输出
The sum of prime number between 1 to 15 is 45
一个有效的解决方案是使用埃拉托斯特尼筛法来查找素数,并将它们加起来以找到所需的和。
程序演示了我们解决方案的工作原理
示例
#include <iostream>
using namespace std;
int findPrimeSum(int n){
int arr[n+1] = {0};
for (int i = 2; i < n; i++) {
for (int j = i * i; j < n; j+=i) {
arr[j - 1] = 1;
}
}
int sumVal;
for (int i = 2; i < n; i++) {
if (arr[i - 1] == 0)
sumVal += i;
}
return sumVal;
}
int main(){
int n = 15;
cout<<"The sum of prime number between 1 to "<<n<<" is "<<findPrimeSum(n);
return 0;
}输出
The sum of prime number between 1 to 15 is 41
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP