トピック 1054: レベル 2 C 言語 - 素数の合計の計算

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

おすすめ

転載: blog.csdn.net/qq_63999224/article/details/132927917