gpt4 book ai didi

检查 Turbo c 中是否使用递归且无循环来检查素数

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

美好的一天,

我正在尝试编写一个代码来确定两个数字之间的素数。这应该递归地完成并且没有任何循环。到目前为止我有这段代码:

#include<stdio.h>
#include<conio.h>
void prime(int x, int y){
int waa;
if(x <= y){
waa = isPrime(x);
if(waa==1 || waa == 0){
printf("");
}else{
printf("%5d",waa);
}
prime(x+1,y);
}
}

int isPrime(int n, int i){
i = 2;
if(i<n){
if(n%i==0 && n!=2 && n!=i){
return(0);
}else{
return(n);
}
i++;
isPrime(n,i);
}
}

void main(){
int num[2];
clrscr();

printf("Input 2 numbers: \n");
scanf("%d %d", &num[0], &num[1]);
prime(num[0], num[1]);
getch();
}

1 到 10 之间的输出为:2,2,3,5,7,9。预期输出:素数 2,3,5,7

谁能帮我解决这个问题。

非常感谢

谢谢

最佳答案

如果函数 isPrime 只是检查给定的整数是否为素数并输出一个 bool 值,那就更简单了。

#include<stdio.h>
#include <math.h>

void prime(int x, int y){
int waa;
if ( x == 1 ) x++;
if(x <= y){
waa = isPrime(x,2); // second input parameter added
if(waa != 0){
printf("%5d",x);
}
prime(x+1,y);
}
}

int isPrime(int n, int i){
if(n%i==0 && n!=2 && n!=i){
return(0);
} else {
if (i < sqrt(n)) {
return( isPrime(n,i+1) );
} else
return 1;
}
}

int main(){
int num[2];

printf("Input 2 numbers: \n");
scanf("%d %d", &num[0], &num[1]);
prime(num[0], num[1]);
return 0;
}

输入:

1
10

输出:

2 3 5 7

http://ideone.com/gyW7ED

关于检查 Turbo c 中是否使用递归且无循环来检查素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18814248/

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