“Prime或not”计划

时间:2015-06-14 12:39:16

标签: c++ primes

我坚持使用这个非常简单的C ++程序,在那里我让用户知道她/他输入的数字是否为素数,但是,由于某些原因,在第一次循环中一切正常但事情变得可疑在第二个。如果有人能提供帮助,我会非常高兴吗?

#include <iostream>
using namespace std;

int main(int argc, const char* argv[])
{
    int number1 = 5;
    int number;
    int a = 0;

    while (number1 == 5)
    {
        int b = 1;
        cout << "Enter your number and we'll tell you if it's prime or not: ";
        cin >> number;

        while (a <= number)
        {
            a++;
            if (number % a == 0)
                b++;
        }

        if (b == 3)
            cout << "Your number is prime" << endl;
        else
            cout << "Your number is not prime" << endl;
    }
}

2 个答案:

答案 0 :(得分:2)

您的计划有几个问题。

第一个是以语句

开头的循环
while (number1 == 5)

是无限的,因为number1在循环中没有改变。

第二个是你必须始终在循环中将变量a初始化为零。它也应该在循环中定义,因为它不在循环外使用。这同样适用于变量number

考虑到一个数字是素数,如果它可以除以1和它自己(数字1除外)。所以我最初将变量b设置为零并将其与2进行比较。比将其与3进行比较更为明确。

程序可以按以下方式查看

#include <iostream>

int main()
{
    while ( true )
    {
        std::cout << "Enter your number and we'll tell you if it's prime or not (0-exit): ";

        unsigned int number = 0;
        std::cin >> number;

        if ( number == 0 ) break;

        unsigned int n = 0;
        unsigned int divisor = 0;

        while ( divisor++ < number )
        {
            if ( number % divisor == 0 ) n++;
        }

        if ( n == 2 )
            std::cout << "Your number is prime" << std::endl;
        else
            std::cout << "Your number is not prime" << std::endl;
    }
}

答案 1 :(得分:1)

你错过了在内心之前重新启动a0

这使它有效。但是,我建议您花时间学习编码。它看起来没有受过教育。

此外,您的计划也不会退出。不确定你的意图是什么,但你可以省略number1变量并简单地使用while(1)(考虑到你的代码原样;可能你正处于开发的开始,所以它取决于)。

#include <iostream>
using namespace std;

int main(int argc, const char* argv[])
{

    int number1 = 5;
    int number;


    int a = 0;

    while (number1 == 5)
    {
        int b = 1;
        cout << "Enter your number and we'll tell you if it's prime or not: ";
        cin >> number;

        a = 0;  <-- Reset to 0 would make it work
        while (a <= number)
        {

            a++;

            if (number % a == 0)
                b++;


        }

        if (b == 3)
            cout << "Your number is prime" << endl;
        else
            cout << "Your number is not prime" << endl;
    }
}

P.S。:您是StackOverflow的新手。所以你很可能会得到答案并逃脱。请考虑接受答案。当它解决了你的问题时,这是一种尊重的做法。