查找质数 1-100 并将它们写入文件

Finding prime numbers 1-100 and write them to file.

本文关键字:文件 1-100 查找      更新时间:2023-10-16

有人可以帮我弄清楚如何找到 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;
 }

我怎样才能让它工作?我已经为此工作了一段时间,并认为它必须与我的回归有关。我真的很迷茫,希望有人能帮助我。我不是在寻找答案,我只是想有人为我指出正确的方向。

您的牙套似乎放错了位置

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

应该是

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

附言和if而不是 ThinTim 发现的while,以及他提到的其他问题。但鉴于break声明,这是导致主要(双关语)问题的原因。

您的大括号集会导致程序在 1 个数字后退出(如果它不是素数)和挂起(如果是)。

你的while应该是一个if

你不需要那个break语句。

在循环中对isPrime的第一次调用不执行任何操作。

当你写数字时,你应该将数字转换为字符。

正如Karthik所提到的,您的括号未正确关闭。

在将问题发布到StackOverflow之前,您应该进行更多的审查。

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;