1

重複の可能性:
素数をチェックするための C++ コードが機能しない

手順は次のとおりです。 素数は、1 とそれ自体でのみ割り切れる数です。この割り当てでは、1 から n (n はユーザーが指定した数) までのどの数が素数であるかがわかります。ユーザーに 1 より大きい数値 n を尋ねます。ループを使用して、変数 i を 2 から n まで繰り返し処理します。反復ごとに、2 から i までのすべての数値をチェックして、その数値が素数かどうかを判断します。素数の場合は、i と「Prime」という単語を出力します。

これは私がこれまでに持っているものです:

 #include<iostream>
 using namespace std;

 int main()
 {
   int i;
   int n;
   cout << "Enter a number greater than 1" << endl;
   cin >> n;

  bool isPrime=true;
  for(i=0; i<=n; i++)
    {
      if (n%i == 0)
        isPrime=false;
    }
  if(isPrime == true)
  cout << i << " is Prime!" << endl;

  return 0;
  }
4

3 に答える 3

3

疑わしい宿題の質問に実際のコードで答えるつもりはないので、代わりに次の疑似コードを使用してください。

main:
    get number from stdin
    loop from 2 to number:
        if number isprime:
            print number " is prime!"
        increment number
    exit

isprime:
    loop from 2 to number - 1:
        if loop counter evenly divides number
            return false
    return true

関数を使用して、数値が素数であるかどうかを判断すると、運が良くなります。この方法で考えを整理するのは簡単であり、考えを整理するのがはるかに難しい問題を解決するための良い習慣です。

機能概要はこちら。

于 2012-09-12T21:59:48.603 に答える
2

これには Sieve アルゴリズムを使用できます。アルゴリズムの説明については、こちらをご覧ください。スマートなソリューションを使用すると、追加のクレジットが得られる可能性があります;)

于 2012-09-12T22:59:17.520 に答える
0
 bool isPrime(int number){
    bool isPrime = true;
    for(int i = 1; i <= sqrt(number); i++){
        if(number%i == 0)isPrime =  false;
   }
return isPrime;
}
于 2012-09-12T22:49:43.757 に答える