Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;如何使用返回布尔值的函数确定素数_C++_Primes - Fatal编程技术网

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

C++ C++;如何使用返回布尔值的函数确定素数,c++,primes,C++,Primes,我假设制作一个程序,要求用户输入一个介于1和100之间的整数'n',并有一个输入验证循环。然后,程序将计算第一个“n”素数并打印它们。所以我想出了如何计算素数并显示它们,每行10个数字,都在主函数中。我要做的是有一个名为isPrime()的函数,它接受一个整数,如果它是素数则返回true,否则返回false。我不知道该怎么办。这是我为函数main()编写的代码 #包括 #包括 使用名称空间std; int main() { 整数; 整数计数=0; 数量; 而(数字100) { cout您似乎在测

我假设制作一个程序,要求用户输入一个介于1和100之间的整数'n',并有一个输入验证循环。然后,程序将计算第一个“n”素数并打印它们。所以我想出了如何计算素数并显示它们,每行10个数字,都在主函数中。我要做的是有一个名为isPrime()的函数,它接受一个整数,如果它是素数则返回true,否则返回false。我不知道该怎么办。这是我为函数main()编写的代码

#包括
#包括
使用名称空间std;
int main()
{
整数;
整数计数=0;
数量;
而(数字<0 | |数字>100)
{

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

您还可以实施AKS原始测试 这可能需要更多的工作。我不知道这个测试的细节,但它是确定的,适用于所有数字

如果您想要一个函数bool isPrime(int number),您可以从主方法中提取此代码,它看起来像这样:

bool isPrime(int number){
    for (int j = 2; j < number/2; ++j)
    {
        if (number % j == 0)
        {
            return false;
        }
    }
    return true;
}
bool isPrime(整数){
对于(int j=2;j
主函数中的for循环类似于:

   for (int i = 2; number > 0; ++i)
   {
      if (isPrime(i))
      {
         count++;
         --number;
         cout << setw(5) << i;
         if (count % 10 == 0)
            cout << endl;
      }
   }
for(int i=2;number>0;++i)
{
如果(i)
{
计数++;
--数量;

好吧,我会记住这一点,但是这段代码让我得到了想要的结果。我正在研究如何更改我必须包含的bool isPrime(int number)来计算一个数字是否为素数,然后将其合并到函数main()中.我对编程相当陌生,所以我真的不想让事情变得比我能接受的更复杂。我修改了我的anwser。这就是你想要的吗?使用
sqrt(number)
而不是
number/2
Irleon可能更快,我之前试过,但它给了我一些不是素数的数字
   for (int i = 2; number > 0; ++i)
   {
      if (isPrime(i))
      {
         count++;
         --number;
         cout << setw(5) << i;
         if (count % 10 == 0)
            cout << endl;
      }
   }