递归检查数字是否为素数
我正在尝试检查该数字是否是质数(通过将其除以 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
请不要这样写!对于或多或少的正常输入,递归方法将吃掉所有堆栈!只需采用旧的迭代方式即可。
当然,暴力解决方案并不是最快的解决方案。您可以尝试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.
您只需要添加检查 1 是否为素数的条件即可。
You just need to include condition for checking 1 if it is prime or not.
您没有递归调用您的函数。
return (n,d-1);
应该是return isPrime(n,d-1);
You aren't recursively calling your function.
return (n,d-1);
should bereturn isPrime(n,d-1);