C++ 计算素数C++;
我正在努力学习如何编写代码,我在努力学习代码的错误之处。我在Visual Studio 2013中用C++编程。 问题:编写一个程序从用户处读取数字N,然后查找前N个素数。素数是一个只有两个除数的数,一个和它本身 我的代码不是打印素数序列,而是重复一些素数C++ 计算素数C++;,c++,visual-c++,C++,Visual C++,我正在努力学习如何编写代码,我在努力学习代码的错误之处。我在Visual Studio 2013中用C++编程。 问题:编写一个程序从用户处读取数字N,然后查找前N个素数。素数是一个只有两个除数的数,一个和它本身 我的代码不是打印素数序列,而是重复一些素数 #include <iostream> using namespace std; // this program will calculate the first N primes int main(){ int N
#include <iostream>
using namespace std;
// this program will calculate the first N primes
int main(){
int N;
cin >> N;
for (int i = 2; i < N; i++){
for (int j = 2; j < N; j++){
if (i%j == 0){
break;
}
else
cout << i << " " << "is a prime number\n";
}
}
}
#包括
使用名称空间std;
//此程序将计算前N个素数
int main(){
int N;
cin>>N;
for(int i=2;i cout无论何时j
不除法i
,您都会打印出i
是素数。您应该等到检查了所有可能的除数后再打印。我不会给出您应该做什么的答案,但它应该包括修改代码的这一部分:
if (i%j == 0){
break;
}
else
cout << i << " " << "is a prime number\n";
}
if(i%j==0){
打破
}
其他的
您的代码中有错误:
在说出它的素数之前,您必须检查所有可能的值。因此,您需要使用一个标志来确定循环中是否有任何值被除i
您必须继续第二个循环,直到i
而不是N
优化
它只需要检查直到sqrt(Number)
就可以检查它的素数是否为-1
#include <iostream>
using namespace std;
// this program will calculate the first N primes
int main(){
int N;
cin >> N;
for (int i = 2; i < N; i++){
int f=0;
for (int j = 2; j*j <= (i); j++){
if (i%j == 0){
f=1;
break;
}
}
if(!f) Cout<<i<<"is prime"<<endl;
}
}
#包括
使用名称空间std;
//此程序将计算前N个素数
int main(){
int N;
cin>>N;
for(int i=2;i 对于(int j=2;j*j这不是一个编程问题,这是一个数学问题,也就是说,你的错误不在你的代码中,而是你对如何确定一个数字是否为素数缺乏理解。看看你的想法。你也误读了这个问题——它希望你找到前N个素数,例如,如果N=3,那么你必须找到前3个素数N数字是2、3和5。你似乎在搜索2和N-1之间的素数。这只是问题的一部分。他也没有搜索前N个素数(而只是搜索2和N-1之间的素数)。