递归检查数字是否为素数

发布于 2024-10-26 10:58:37 字数 332 浏览 0 评论 0原文

我正在尝试检查该数字是否是质数(通过将其除以 n 以下的所有数字)。这是我的尝试:

bool isPrime(int n, int d){
    if (d == 1)
        return true;
    else{
        if (n % d == 0){
            return false;
        }
        else
            return (n,d-1);
    }
}

n - 检查它是否是素数的数字。 d - 当调用函数 n-1 时,n 以下的数字。

请帮我弄清楚我做错了什么。

I'm trying to check whether the number is a prime(by dividing it by all numbers below n). Here's my attempt :

bool isPrime(int n, int d){
    if (d == 1)
        return true;
    else{
        if (n % d == 0){
            return false;
        }
        else
            return (n,d-1);
    }
}

n - the number to check whether it is prime.
d - number below n, when calling the function n-1.

Please help me figure out what am I doing wrong.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

多情癖 2024-11-02 10:58:43

请不要这样写!对于或多或少的正常输入,递归方法将吃掉所有堆栈!只需采用旧的迭代方式即可。

当然,暴力解决方案并不是最快的解决方案。您可以尝试Eratosthenes' sieve,或众多更高级的测试

Please don't write this in such a way! For more or less normal input, recursive approach will eat all the stack up! Just go for the old good iterative way.

Of course, the brute force solution is not the fastest one. You could try Eratosthenes' sieve, or some of numerous more advanced tests.

扭转时空 2024-11-02 10:58:43

您只需要添加检查 1 是否为素数的条件即可。

bool isPrime(int n, int d)
{
    if(n<2)
        return 0;
    if(d == 1)
        return true;
    else 
    {
        if(n % d == 0) 
            return false;
        else
            return isPrime(n, d - 1);
    }
}

You just need to include condition for checking 1 if it is prime or not.

bool isPrime(int n, int d)
{
    if(n<2)
        return 0;
    if(d == 1)
        return true;
    else 
    {
        if(n % d == 0) 
            return false;
        else
            return isPrime(n, d - 1);
    }
}
楠木可依 2024-11-02 10:58:43
#include<iostream>
using namespace std;
bool findPrime(int x,int y);
int main()
{int n;
cout<<"enter the number to be checked \n";
cin>>n;
  int x=findPrime(n,n-1);
  if(x==1)
    cout<<"its a prime number";
  else
    cout<<"its not prime";
}
bool findPrime(int x,int y)
{
    if(x%y==0&&y!=1)
    {
        return false;
        }
    else{
        if(y==1)
        return true;
    else
        return findPrime(x,y-1);
}
}
#include<iostream>
using namespace std;
bool findPrime(int x,int y);
int main()
{int n;
cout<<"enter the number to be checked \n";
cin>>n;
  int x=findPrime(n,n-1);
  if(x==1)
    cout<<"its a prime number";
  else
    cout<<"its not prime";
}
bool findPrime(int x,int y)
{
    if(x%y==0&&y!=1)
    {
        return false;
        }
    else{
        if(y==1)
        return true;
    else
        return findPrime(x,y-1);
}
}
好多鱼好多余 2024-11-02 10:58:42

您没有递归调用您的函数。 return (n,d-1); 应该是 return isPrime(n,d-1);

You aren't recursively calling your function. return (n,d-1); should be return isPrime(n,d-1);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文