繁体   English   中英

使用布尔值查找素数的程序

[英]Prime number finding program using bool values

我试图用C ++编写一个程序,给定一个包含随机整数的数据文件,将每个整数标识为素数或非素数,并对整数进行计数。 这是我到目前为止的内容:

#include <iostream>
using namespace std;
int main()
    {
  int number;  //number to be tested
  int  count = 0;  //count of integers in file
  cin >> number;
  while (cin)
    {
      bool prime = true;
  if (number <= 0)
    {
      prime = false;
    }
  else
    {
      for (int i=2; i<number; i++)
      if (number % i == 0)
         { 
           prime = false;
           break;
         }
    }

  if (prime = true)
        cout << number << " is a prime number." << endl;
  if (prime = false)
        cout << number << " is not a prime number." << endl;
  cin >> number;  
  count++;
 } 
cout << "The file contains " << count << " integers" << endl;
return 0;
}

该程序进行编译,但是发现数据集中的所有值都不是素数。 这是我从数据文件中得到的输出:

24是质数。
13是质数。
18是质数。
-25是质数。
42是质数。
0是质数。
2是质数。
该文件包含7个整数

有什么建议么? 我是否正确使用布尔值? 谢谢

在检查prime是true还是false时,您正在使用赋值运算符=而不是相等比较运算符== (你也应该用括号为您for循环。)

请注意,直到prime/2 (或sqrt(prime) ,请参见下文)之前,您都可以检查这些因数,因为不超过一半的数字可能是一个因数!

这行:

if (prime = true)
        cout << number << " is a prime number." << endl;

为变量“ prime”分配“ true”。 作为表达式,赋值操作返回要赋值的值,因此if内的表达式的值为真,因此输出该数字为质数。

您必须通过==更改=。 避免这些错误的一个老技巧是将句子更改为:

if (true = prime)
        cout << number << " is a prime number." << endl;

然后,编译器已警告您有关明显的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM