取值后程序停止

时间:2019-07-16 16:30:58

标签: c++

我正在为素数编写此代码;在从用户那里获取输入后,程序不再进行任何进一步的计算。
输入/输出的示例为:

Enter the Number You Want to Check::67

输入后,程序不会显示数字是否为质数。
这是代码:

int main() {
  int i, n;
  cout << "Enter the Number You Want to Check::";
  cin >> n;
  if (n == 1) {
    cout << "Smallest Prime number is 2;" << endl;
  }
  for (i == 2; i < n; i++) {
    if (n % i == 0) {
      cout << "No is not prime";
      break;
    }
  }
  if (n == i) {
    cout << "Number is prime";
  }
  return 0;
}

4 个答案:

答案 0 :(得分:5)

int i, n;
...
for(i==2;i<n;i++)

那是假的。您从未初始化过i

我怀疑你想写

int i, n;
...
for(i=2;i<n;i++)

即;使for的第一项循环到i的赋值,而不是与2进行比较。

答案 1 :(得分:2)

for (i== 2; i < n; i++)

这通过检查i是否为2来开始循环。尝试将i设置为2:

for (i = 2; i < n; i++)

此外,在循环之前,您检查n是否为1,但不检查其是否小于10可以被所有素数整除,但是-1不能被所有素数整除。

答案 2 :(得分:1)

在此声明

grepl

您正在使用比较运算符!而不是赋值运算符for(i==2;i<n;i++) 。改写

==

实际上,无需在循环中使用以下条件=,因为当for(i=2;i<n;i++) 大于i<n i时,永远不能等于{{1 }}。

这里是一个演示程序,显示了如何减少循环的迭代次数。

n / i

其输出可能看起来像

n % i

您可以编写一个单独的函数来确定给定数字是否为素数。

一种更有效的方法是从素数集中排除偶数(除2外)。

这是一个演示程序。

0

其输出可能与上面显示的相同。

答案 3 :(得分:1)

循环内的变量初始化是错误的。应该是下面的样子

for(i=2;i<n;i++)

代替

for(i==2;i<n;i++)

可能是拼写错误