gpt4 book ai didi

C - 较小素数的递归函数

转载 作者:行者123 更新时间:2023-11-30 20:32:11 25 4
gpt4 key购买 nike

我做了这个练习,它希望我创建一个函数来检查一个数字是否是“素数”,然后创建另一个函数来打印我检查的素数中有多少个更小的素数。问题是我需要创建一个递归函数来使用第一个函数(检查数字是否为素数的函数)检查较小素数的数量。这就是我到目前为止所得到的,我被困在这里了。递归函数让我感到困惑。

#include <stdio.h>

int main() {
int a;
scanf("%d", &a);
checkPrime(a);
smallerPrime(a);
}

int checkPrime (int number) {
if(number % 2 == 0) {
return 1;
} else {
return 0;
}
}
int smallerPrime (int number) {
if(checkPrime(number) % 2 != 0){
return ;
} else {
return ;
}
}

最佳答案

我从评论中看到,您实际上想检查一个数字是否为偶数,如果是,您想知道使用递归有多少个较小的偶数,而不是标题中提到的素数,所以我的答案将提到这一点。

你可以使用这样的东西:

int smallerPrime (int number) {
static int count = -1; // so that the number itself will not be counted
if(number <1) //excluding 0 or negative numbers
return 0;
if(number !=2) {//we know the number has to be even so no check is needed
++count;
smallerPrime(number - 2);
return count+1; // the +1 is in order to count 2 as well
}
else {
return 0;
}

例如:输入 10 将给出输出 4 (8,6,4,2)

正如 paxdiablo 所提到的,这里使用递归并不是最好的主意。

如果数字非常大,你的程序可能会崩溃。

此外,请注意,此代码仅适用于正数,因为我不确定您是否想计算除它们之外的任何数字(负数(如 -2、-4 等)和 0 也被视为偶数)。我在这里排除了它们。

在main中,您需要将checkPrime的返回值放入某个变量中,并使用它来确定是否需要使用smallerPrime函数。因此您应该在代码中更正这一点。

当然,您可以通过一些小的更改在一个函数中完成所有操作。

关于C - 较小素数的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48178604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com