gpt4 book ai didi

c - 查找输入的素数之后的第一个素数

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

我试图找到n之后的第一个素数,除非输入的n已经是素数(然后程序打印出n并终止)。

输入示例:

n = 7

第一个质数是:7 (好)

n = 591

第一个素数是:591(不对,591不是素数)

n = 14

第一个质数是:15(这也是假的,不应该是17吗?)

我哪里出错了?这可能是一个显而易见的问题,但我才刚刚开始。

#include <stdio.h>

int main(){

int i = 2, n, m;

printf("n = ");

do
scanf("%d", &n);
while (n < 2);

m = n / 2;

if (n == 2){
printf("The first prime number is: %d", n);
return 0;
}

while ( i <= m ){

if (n % i == 0)
n++;

if (n % i != 0){
printf("The first prime number is: %d", n);
return 0;
} else i++;

}

return 0;
}

最佳答案

您确定素数的逻辑是错误的。

首先你应该编写一个函数(不一定但推荐)来检查一个数字是否是素数。下面是这个函数的代码:

    int checkPrimeNumber(int n)
{
int j, flag = 1;

for(j=2; j <= n/2; ++j)
{
if (n%j == 0)
{
flag =0;
break;
}
}
return flag;
}

一旦包含该函数,您的 while 循环就应该循环,直到 if 使用该函数找到从 N 开始的第一个素数。下面是该函数的代码。

您还可以在此处查看此答案: https://codereview.stackexchange.com/questions/71212/find-smallest-prime-number-greater-than-given-n

关于c - 查找输入的素数之后的第一个素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53339734/

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