找到素数1-100并将它们写入文件。

时间:2013-09-18 01:27:10

标签: c++

有人可以帮我弄清楚如何找到1-100之间的所有素数并将它们写入文件吗?

 #include<iostream>
 #include<fstream>            
 using namespace std;
 bool isPrime(int);
 int main()
 {
int iNum;
cout << "This program will calculate and store all the prime numbers between 1 and     

   100 "<<endl;
ofstream myfile( "writeto.txt" );

    for(int i = 1; i <= 100; i++)
    {
    isPrime(i);
    while(isPrime(i) == true)
        {
        myfile <<  i <<endl;
        break;

    }
    myfile.close();
return 0;
    }
 }

 bool isPrime(int iNum)
 {
 bool status;  
 if( iNum <= 1 )

 return false; 

  for( int i = 2; i < iNum; i++ ) 
 { 
     if( iNum % i == 0 ) 
         return false; 
  } 

 return true;

 }

我怎样才能让它发挥作用? 我一直在研究这个问题并认为它必须对我的回归做些什么。我真的迷路了,希望有人可以帮助我。我不是在寻找答案,我只是希望有人指出我正确的方向。

3 个答案:

答案 0 :(得分:6)

你的大括号似乎放错了地方

        break;

    }
    myfile.close();
return 0;
    }
 }

应该是

        break;

      }

    }
    myfile.close();
return 0;
 }

P.S。和ThinTim发现的if代替while,以及他提到的其他问题。但是根据break陈述,这是导致素数(双关语)问题的原因。

你的大括号会导致程序在1个数字后退出,如果不是素数,则挂起,如果是,则挂起。

答案 1 :(得分:3)

您的while应该是if

您不需要break声明。

循环内第一次调用isPrime不会做任何事情。

您应该在编写时将数字转换为字符。

正如Karthik所说,你的括号没有正确关闭。

在向StackOverflow发布问题之前,您应该进行更多的审核。

答案 2 :(得分:1)

for(int i = 1; i <= 100; i++)
{
    isPrime(i);
    while(isPrime(i) == true)
    {
        myfile <<  i <<endl;
        break;

    }
    myfile.close();
    return 0;
}

返回0;会让你在第一次素数之后退出该计划...

正确

for(int i = 1; i <= 100; i++)
{
    if(isPrime(i)) {
        myfile <<  i <<endl;
    }
}
myfile.close();
return 0;