gpt4 book ai didi

c - 关于 "C"中的 Prime Generation - 我的代码有什么问题? -

转载 作者:太空宇宙 更新时间:2023-11-04 05:46:12 24 4
gpt4 key购买 nike

我是三年级的非正规 CS 学生,我刚刚意识到我必须开始编码。

我以较低的分数通过了编码类(class),因此我在编码和编程方面没有很好的背景。

我正在尝试编写一个代码,在给定的上限和下限之间生成素数。不太懂C,逼我写个粗略的代码过一遍再解决。我可以轻松地为预期功能设置逻辑,但我可能会通过几种不同的方式创建错误的算法。

这里我分享一下我最后的代码,我打算计算一个数的余数为零时,它应该是 self 和 1 ,这样 count==2;我的实现和我的解决方案生成风格有什么问题?我希望你能温暖我进入编程世界,我找不到足够的动力和勇气深入编程。

Stdio 和 Math.h 包含在内

int primegen(int down,int up)
{
int divisor,candidate,count=0,k;

for(candidate=down;candidate<=up;candidate++)
{
for(divisor=1;divisor<=candidate;divisor++)
{
k=(candidate%divisor);
}
if (k==0) count++;
if(count==2)
{
printf("%d\n", candidate);
count=0;
}
else
{
continue;
}
}
}

int main()
{
primegen(3,15);
return 0;
}

最佳答案

您在 candidate%divisor 测试中包括了 1 和 candidate,这两者都将始终返回 0,因此您测试的每个数字都将显示为质数。

取而代之的是:

for(divisor=1;divisor<=candidate;divisor++)

这样做:

for(divisor=2;divisor<candidate;divisor++)

更新

您的代码有太多问题无法一一列举,但无论如何这里有一些:

  • 您正在 for 循环之外检查 candidate%divisor 的结果
  • 当你检查k时,k总是candidate%candidate,或者0
  • 你只检查一次k,在除数循环之后
  • 不要在循环结束时continue,默认情况下会发生这种情况

看,这是一些最简单的可能实现的伪代码。尝试找出您的代码与此偏离的地方:

for candidate = down to up
// assume the candidate is primt
prime = true

// check all divisors from 2 to the candidate - 1, inclusive
for divisor = 2 to candidate - 1
if candidate % divisor == 0
// divisor is a factor of candidate
// candidate isn't prime, so we can stop checking
prime = false
break
end if
next divisor

// if prime is still true, we successfully tested every number from 2..candidate
// and found no factors
if prime
print "candidate {candidate} is prime!"
end if
next candidate

关于c - 关于 "C"中的 Prime Generation - 我的代码有什么问题? -,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4620642/

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