gpt4 book ai didi

我可以从 main 变量得到 'return' 的结果吗?

转载 作者:太空宇宙 更新时间:2023-11-04 07:56:38 26 4
gpt4 key购买 nike

所以我有这个练习,我需要显示 N 个第一个质数,但我需要专门创建一个函数来知道这个数是否是质数

#include <stdio.h>
#include <stdlib.h>

int prime(int num){
int cont,i,j=0,b;

b=num;

do{
j++;
i=0;
for(cont=1;cont<j;cont++){
if(j%cont == 0)
i++;
}
if(i == 1){
return(j);
c=j;
b--;
}
} while (b > 0);
}

int main(){
int *v,n,cont;

do{
printf("Input an integer: ");
scanf("%d",&n);
} while (n <= 0);

v = (int *)malloc(n * sizeof(int));

for(cont=0;cont<n;cont++){
v[cont] = prime(n);
}


for(cont=0;cont<n;cont++){
printf("%d ",v[cont]);
}

}

我这样做的问题是,当我再次调用函数时,变量 J 被设置为 0,我试图设置类似 c=j 的东西,所以当程序返回到素数时函数它将具有“先前”的 j 值,但它会得到一个奇怪的随机数。所以我想知道是否有办法将 main 函数中的结果“返回”给 prime 函数,我找不到任何对我有帮助的东西,至少我不能理解

最佳答案

你的函数 prime() 没有按预期工作,还有很多其他错误 -

1) 因为最小质数是2,变量cont应该从2开始。

2) scanf 在这种情况下不需要在循环中

3) 只有当cont被确认为素数时,才在v中输入值。

查看此函数 prime2(为清楚起见,未进行优化):

bool prime2(int n)
{
for(int i = 2 ; i<n-1;i++)
if( n% i == 0) return false;
return true;
}

int main(){
int *v,n,cont,cc=0;
printf("Input range: ");
scanf("%d",&n);
v = malloc(n * sizeof(int));

for(cont=2;cc<n;cont++){
if( prime2(cont) == true )
{
v[cc] = cont;
cc++;
}
}

for(cont=0;cont<n;cont++){
printf("%d ",v[cont]);
}

delete v;
}

输出:

enter image description here

关于我可以从 main 变量得到 'return' 的结果吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49583473/

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