2 つの正の整数m と n (m<n)を入力し、 m と n の間のすべての素数( m と n を含む)の合計を求め、関数 isprime(x) を定義して呼び出して、x が素数かどうかを判断します (素数はそれ自体でしか割り切れない 1 以外の自然数で割られます。
入力フォーマット
ん
出力フォーマット
素数和
サンプル入力
2 3
サンプル出力
5
私のコード:(関数は書かれていません)
素数の定義は、 1 とそれ自体でのみ割り切れる数です( 1 は素数ではありません。これに注意してください)。
したがって、2 層ループを定義します: for->for double-layer for ループ 外側の層は 1 回実行され、内側の層は完全にループされることに注意してください。
-》外層は割る数としてa〜b、内層は約数(i%j==0の場合、1以外の数自体はiを割ることができる)--》iはa素数以外の数
Breakはこの層のすべてのループから抜け出し、 Continueはこの層の変数 +1だけです
#include<iostream>
#include<cmath>
using namespace std;
int main() {
int a, b;
cin >> a >> b; //输入两个数
bool isPrime = true;
int sum = 0;
for (int i = a; i <= b; i++) { //计算a到b之间素数的和
isPrime = true;
for (int j = 2; j <=sqrt(i); j++) { //若从2到本身i能被整除 那就 不是素数
if (i % j == 0) {
isPrime = false;
break; //?break跳出j所有循环,而continue只是j++(如果后面有语句不执行)
}
}
if (i == 1)
continue;
else if (isPrime)
sum += i;
}
cout << sum;
return 0;
}