当前位置: 首页 > 知识库问答 >
问题:

C++如何使用返回布尔值的函数来确定素数

杨俊茂
2023-03-14
#include <iostream>
#include <iomanip>
using namespace std;

int  main()
{
   int  number;
   int count = 0;

   cout << "Enter an integer between 1 and 100: ";
   cin >> number;

   while (number < 0 || number > 100)
   {
      cout << "Invalid number." << endl;
      cout << "Enter an integer between 1 and 100: ";
      cin >> number;
   }

   cout << "The first " << number << " primes: \n" << endl;

   for (int i = 2; number > 0; ++i)
   {
      bool  isPrime = true;
      for (int j = 2; j < i; ++j)
      {
         if (i  % j == 0)
         {
            isPrime = false;
            break;
         }
      }
      if (isPrime)
      {
         count++;
         --number;
         cout << setw(5) << i;
         if (count % 10 == 0)
            cout << endl;
      }
   }
   cout << endl;
   system("pause");
   return 0;
}

共有1个答案

段干博明
2023-03-14

你似乎在测试i%j比i低的每一个j。但是如果您测试j=3,那么您可以排除所有3的倍数。当一个数不能被3除时,它就不能被6除。这将提高性能。

您还可以实现AKS primalty测试https://en.wikipedia.org/wiki/aks_primality_test,这可能需要更多的工作。我不知道这个测试的细节,但它是确定性的,对所有数字都有效。

如果您想要一个函数bool isPrime(int number),您可以从您的main方法中提取以下代码,它看起来如下所示:

bool isPrime(int number){
    for (int j = 2; j < number/2; ++j)
    {
        if (number % j == 0)
        {
            return false;
        }
    }
    return true;
}
   for (int i = 2; number > 0; ++i)
   {
      if (isPrime(i))
      {
         count++;
         --number;
         cout << setw(5) << i;
         if (count % 10 == 0)
            cout << endl;
      }
   }
 类似资料:
  • 我正在使用MyBatis调用PL SQL数据库中的一个函数。该函数中有一个OUT参数为布尔值,如下所示: 我的问题是,当我试图从xml映射器调用函数时,每次尝试mybatis都不能识别布尔输出,并抛出me和错误,就像不兼容的类型一样。另外,当我试图从PLSQL Developer测试该函数时,它会进行如下转换并以位形式返回布尔值。 忽略这个整数并指定MyBatis将输出视为布尔值是正确的?我怎么能

  • 意识到递归是我的弱点之一后,我找到了一个网站,迫使你递归地解决简单问题(https://codestepbystep.com/problem/view/cpp/recursion/digitsSorted?problemsetid=15) 我坚持的一个(digitalsSorted,数字5)如下:调用一个传递数字作为参数的函数。如果该数字中的数字按递增顺序排序,则函数返回True,否则返回Fals

  • 我想写返回true的Python函数一个字符串s是回文,也就是等于它的反。例如,“赛车”和“abba”是回文。到目前为止,这是我不成功的尝试。 当我告诉我的函数返回相反的结果时,我没有问题,但是,我不知道应该如何进行比较才能返回一个布尔值。 使用上面的函数会产生以下错误 现在我完全理解为什么会产生上述错误。这是因为一些递归函数返回一个boool并尝试将其添加到字符串中;但是我做不到的是如何避免这个

  • 问题内容: 我想使用排球库发布布尔值,双精度数据。我不知道如何使用它。还有其他任何过程吗?谢谢。 这是我的方法。 问题答案:

  • 我正在使用返回true false的方法(例如方法containsKey of MutableList)。由于函数是用java写的,Kotlin把返回类型称为Boolean?这就是我得到一个编译错误的原因:“必需:布尔,发现:布尔?”.我必须说在某些情况下(不知道为什么)使用这个方法是可以的,有时它会返回上面的错误。有人能猜到是什么原因吗? 我的代码: 如果编译了第一个,则第二个会出错: 布尔类型

  • 在VueJS中,我尝试使用axios返回布尔值 console.log刚刚返回 Promise{[[PromiseState]]:"待定",[[PromiseValue]]:未定义} 但我想要的回报不是真就是假。