gpt4 book ai didi

找不到素数

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

我知道我可以使用一个额外的变量来计算除数,但我的问题是为什么这条线不起作用?素数 = num/1 == num && num/num == 1;另请检查下面有问题的代码中的注释。谢谢。

#include <stdio.h>
int main()
{
long num = 0;
long req = 0;
int control = 0;
int div = 1;
int prime;

printf("Give starting number: ");
scanf("%d", &num );
printf("\nGive required numbers: ");
fflush(stdin);
scanf("%d", &req);;
while(req > control)
{
printf("\nNumber is: %d ", num);
prime = num / 1 == num && num / num == 1; /*This lines here why dosnt thi work?*/

if(prime) /*Also here lets say the above line work with what do i avaluate the if with so it only prints tha asterisk for the prime numbers?*/
printf("* ");
printf("Equal Divisors are: ");

while(div <= num)
{
if(num % div ==0)
printf("%d ", div);
div++;
}

if(req == control)
break;

num++;
control++;
div=1;


printf("\n");
}
return 0;
}

最佳答案

@Leeor 在他/她的评论中指出了这一点:这不是检查素数的方式。每个数字都会满足您的标准。

素数是只能被自身和 1 整除的数字。因此,您必须循环遍历所有其他除数,最多 num/2,并确保它们不会给出整数结果。 (从技术上讲,您只需循环遍历所有 PRIME 数除数 - 2、3、5、7、11 等 - 但这很难做到。)

编辑:正如 @thb 在评论中指出的那样,您必须循环遍历所有其他除数直到 sqrt(num),而不是 num/2。

这是一些伪代码:

Set a Boolean variable to "True" (meaning "yes, it's a prime").
Loop from 2 to sqrt(num).
If num divided by the loop counter is an integer, then...
It's NOT a prime number.
Set the Boolean variable to "False".
If you can exit the loop there, great. But no big deal if you can't.
After the loop, if the Boolean variable = "True" then it's a prime number. If it's "False" then it's not a prime number.

关于找不到素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23506257/

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