我是C ++的新手,我正在尝试制作一个列出素数的控制台程序。我在获得预期结果时遇到问题,因为它在显示后停止
2 is a prime number
这是错误的,列表不完整。请查看我的代码并帮我解决。
#include<iostream>
using namespace std;
int main()
{
int num,divi,count=0;
for(num=0;num<10;num++)
{
for(divi=1;divi<=num;divi++)
{
if(num%divi==0)
{
count++;
}
if(count==2){
cout<<num<<"is a prime number"<<endl;
}
}
}
}
答案 0 :(得分:2)
每次检查新号码时都必须初始化计数。并且第二个if语句必须放在内部循环之外。 例如
for(num=0;num<10;num++)
{
count = 0;
for(divi=1;divi<=num;divi++)
{
if(num%divi==0){count++;}
}
if(count==2){cout<<num<<"is a prime number"<<endl;}
}
考虑到2是素数。
在不使用它们的声明性区域中声明变量也不是一个好主意。我会编写像
这样的程序#include <iostream>
int main()
{
const int N = 10;
for ( int num = 0; num < N; num++ )
{
int count = 0;
for ( int div = 1; div <= num; div++ )
{
count += num % div == 0;
}
if ( count == 2 ) std::cout << num << " is a prime number" << std::endl;
}
return 0;
}
或者代替
count += num % div == 0;
你可以像在原始程序中那样写作
if ( num % div == 0 ) ++count;
答案 1 :(得分:0)
您需要在外部for循环的每次迭代开始时将count重置为0。你也可以在那里开始计算。
答案 2 :(得分:0)
第一次检查后您无法重置count
,因此当您检查数字3时,它会从2
开始
您应该每次迭代重置计数:
for(num=0;num<10;num++)
{
count = 0;
... // Rest of the code here
}