【问题标题】:Testing Primality in C++ [duplicate]在 C++ 中测试素性 [重复]
【发布时间】:2014-03-26 15:55:53
【问题描述】:

谁能帮帮我?我正在尝试测试素性,但我似乎无法让它发挥作用。无论出于何种原因,每当我运行它时,只要我从一个非素数开始,它就会运行良好。但是,在运行非素数后,输出为“0 1”,而不仅仅是 0。似乎如果我从非素数开始,一切都是“0 1”,而不是正确的输出。

#include <iostream>
using std::cin;
using std::cout;
using std::endl;
#include <cmath>

int main()
{
    int num;
    int x = 2;
    //cin >> num;
    while(cin >> num)         //(x<=num-1) 
    { 

        for(x<=num-1; x++;)
        {
            if(num%x==0)
            { 
                cout << "0" << endl ; //1 is prime, 0 is not prime
                break; 
            }

            if(x==num)
            {
                cout << "1" << endl ;
                break; 
            }
        }

        if(x==num)
        {
            cout << "1" << endl ;
        }

    }

    return 0;
}

【问题讨论】:

  • 调试器说了什么?
  • for(x&lt;=num-1; x++;) 分号在错误的位置。试试for(;x&lt;=num-1; x++)
  • 如果您将最后一条评论与一个答案结合起来,那么您将得到解决方案。删除第二个 cout 并修复你的 for 循环语法。

标签: c++


【解决方案1】:
for(x<=num-1; x++;)

分号在错误的位置,所以不是说明应该执行的条件x&lt;=num-1,而是说明x&lt;=num-1表达式只是被评估而没有效果,然后在素数的情况下x递增直到

if(num%x==0)

是真的,因为此时实际上是num==x。然后你打印你的'0',然后你打印'1',因为

if(x==num)
{
  cout << "1" << endl ;
}

是真的。

【讨论】:

    【解决方案2】:

    嗯,你有 cout

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-22
      • 2011-05-13
      • 1970-01-01
      • 2010-12-18
      • 2011-07-31
      • 2010-10-01
      • 1970-01-01
      • 2011-07-06
      相关资源
      最近更新 更多