1

私のコードは機能すると思います。ただし、01111E5、または 17B879DD などを出力します。

誰かが理由を教えてください。

10,001 ではなく P の制限を設定していることは承知しています。私のコードは、素数 2 をスキップして 3 から始めるため、このようなものです。

#include <iostream>
bool prime (int i)
{
bool result = true;
int isitprime = i;
for(int j = 2; j < isitprime; j++)              ///prime number tester
{
    if(isitprime%j == 0) result = false;
}   
return result;
}


int main (void)
{
using namespace std;
int PrimeNumbers = 1;
int x = 0;
for (int i = 3 ; PrimeNumbers <=10000; i++)
{
    if(prime(i))
    {
        int prime = i;
        PrimeNumbers +=1;
    }
}   
cout<<prime<<endl;
system ("pause");
return 0;
}
4

5 に答える 5

7
cout<<prime<<endl;

bool prime (int i)宣言した変数ではなく、関数のアドレスを出力します。関数または変数の名前を変更するだけです(スコープを変更するかcout、ループ内に移動する必要があることに注意してください-それは、それらすべてを印刷したい場合です):

for (int i = 3 ; PrimeNumbers <=10000; i++)
{
    if(prime(i))
    {
        cout << i << endl;
        PrimeNumbers++;
    }
}  

また:

for(int j = 2; j < isitprime; j++)              ///prime number tester
{
    if(isitprime%j == 0) result = false;
}   

(1) までのすべての数値をチェックする必要はありませんがisitprime、せいぜい まででsqrt(isitprimt)あり、(2) が までチェックするだけでよく、その時点でループから抜けることができるため、最適化できます。resultfalsebreak

于 2012-10-30T19:54:59.907 に答える
3

出力はまったく奇妙ではありません。

cout<<prime<<endl;

ここの関数ポインタを出力primeしています。

ここで作成した変数を印刷するつもりだったと思われます。

 int prime = i;

しかし、これはループスコープ内にあります。実際、警告を有効にしてコンパイルする場合、コンパイラはこの変数が使用されないことを通知する必要があります。また、CまたはC ++の変数に関数(またはより高いレベルのスコープ内の他の変数)と同じ名前を付けることはお勧めできません。

于 2012-10-30T19:57:19.353 に答える
0

テスト変数が変更されない可能性があるため、メイン プログラムのループが正しく停止しませんPrimeNumbers
試す:

  for (int i = 3; i < 10000; i++)
  {
   //...
  }

また、ステートメントprime内で変数を宣言したため、ステートメントの実行 if後に変数が消えます。if

  if (prime(i))
  {
      int prime = i; // <-- Declare the variable before the for loop.
  //...
于 2012-10-30T20:02:50.177 に答える
0

nth から 2 までの素数を見つけるためのコード (1 は素数でも合成でもない) を以下に記述します。math.h ヘッダー ファイルを使用していません。

             #include<iostream.h>
             #include<stdio.h>
             #include<conio.h>
             class prime
                 {
                  int a;
                  int i;
                  public:
                    void display();
                  };

                void prime::display()
                    {
                      cout<<"Enter the number to see primes less than it till 2";
                      cin>>a;
                      int count=0;
                      for(int j=a;j>=1;j--)
                        {
                           for(int i=1;i<=j;i++)
                              {
                                if(j%i==0)
                                  {
                                    count++;
                                   }
                               }
                                if(count==2)
                                  {
                                      cout<<"\t"<<j;
                                   }
                              count=0;
                              }
                            }
                           void main()
                              {
                                  clrscr();
                                  prime k;
                                  k.display();
                                  getch();
                               }
于 2012-11-05T20:26:31.503 に答える
-1

1 から n までの素数を見つけたい場合は、これが役立つことを願っています。

   #include <iostream>

#include <vector>
static bool _isprime (int number)
{   
    if(number==1)
    {
        return false;
    }
    bool flag=true;
    if(number==2||number%2!=0)
    {
        for(int i=2;i<number;i++)
        {
            if(number%i==0)
            {
                flag=false;
            }
        }
    }
    else flag=false;
    return flag;
}
int main (void)
{
using namespace std;
vector<int> primenumber;
cout<<"prime number between 1 and ?"<<endl;
int x=0;
cin>>x;
    for(int i=0;i<=x;i++)
    {
        if(_isprime(i)==true)
        {
        //cout<<x<<" is a prime number"<<endl;
            primenumber.push_back(i);
        }
        //else cout<<x<<" is not a prime number"<<endl;
    }
    for(int i=0;i<primenumber.size();i++)
    {
        cout<<primenumber[i]<<endl;
    }
    cout<<"the number of prime number is "<<primenumber.size()<<endl;
system("pause");
return 0;
}
于 2012-10-30T22:57:08.350 に答える