用c加加求1到200所有质数之和
时间: 2024-03-12 13:49:26 浏览: 141
以下是使用 C++ 求1到200之间所有质数之和的代码:
```c++
#include <iostream>
using namespace std;
int main()
{
int sum = 0;
for(int i = 2; i <= 200; i++) {
bool is_prime = true;
for(int j = 2; j < i; j++) {
if(i % j == 0) {
is_prime = false;
break;
}
}
if(is_prime) {
sum += i;
}
}
cout << "1到200之间所有质数之和为:" << sum << endl;
return 0;
}
```
输出结果为:1到200之间所有质数之和为:4227
相关问题
C加加求出1至n的和谐素数之和
好的,我来给你讲解一下如何用C++求出1至n的和谐素数之和,代码如下:
```c++
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e7+10;
int vis[maxn],primes[maxn],cnt;
long long ans[maxn];
void get_primes(int n){
for(int i=2;i<=n;i++){
if(!vis[i]){
primes[++cnt]=i;
}
for(int j=1;j<=cnt&&i*primes[j]<=n;j++){
vis[i*primes[j]]=1;
if(i%primes[j]==0) break;
}
}
}
int main(){
int n;
scanf("%d",&n);
get_primes(n);
long long res=0;
for(int i=1;i<=cnt;i++){
int p=primes[i];
int q=p-1;
if(!vis[q]) res+=q;
}
printf("%lld\n",res);
return 0;
}
```
我们先定义一个`vis`数组来判断每个数是否为质数。
然后,我们定义`primes`数组来存储素数。
接着,我们定义`cnt`来记录素数的个数。
我们遍历 `[1, n]` 中的每个数,如果当前数是质数,我们直接将其加入素数数组中。
如果当前数不是质数,我们就遍历素数数组中的每个数,并将当前数与乘积的位置标记为非质数。
最后,我们遍历素数数组中的每个数,并计算其减1的数`q`是否为素数,如果是素数就将其加入结果中。
最终,我们输出结果即可。
希望这个代码对你有所帮助!
C加加求出1至n的和谐素数之和,不用数组
好的,下面给出不使用数组的C++代码来求出1至n的和谐素数之和:
```c++
#include<bits/stdc++.h>
using namespace std;
bool is_prime(int n) {
if(n<=1) return false;
for(int i=2;i*i<=n;i++) {
if(n%i==0) return false;
}
return true;
}
int main() {
int n;
scanf("%d",&n);
int res=0;
for(int i=2;i<=n;i++) {
if(is_prime(i)) {
int q=i-1;
if(is_prime(q)) {
res+=q;
}
}
}
printf("%d\n",res);
return 0;
}
```
我们定义一个函数`is_prime`来判断一个数是否为素数。
然后,我们遍历 `[2, n]` 中的每个数,如果当前数是素数,我们就计算其减1的数`q`是否为素数,如果是素数就将其加入结果中。
最终,我们输出结果即可。
希望这个代码对你有所帮助!
阅读全文