有人可以帮我弄清楚如何找到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;
}
我怎样才能让它发挥作用? 我一直在研究这个问题并认为它必须对我的回归做些什么。我真的迷路了,希望有人可以帮助我。我不是在寻找答案,我只是希望有人指出我正确的方向。
答案 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;