需要帮助修复素数程序

Need help in fixing prime numbers program

本文关键字:程序 帮助      更新时间:2023-10-16

我是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;
            }
        }
    }
}

每次检查新数字时,都必须初始化计数。第二个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;

您需要在外部for循环的每次迭代开始时将count重置为0。你不妨先在那里宣布计数。

您在第一次检查后未能重置count,因此当您检查数字3 时,它从2开始

您应该重置每次迭代的计数:

for(num=0;num<10;num++)
{  
    count = 0;
    ... // Rest of the code here
}