gpt4 book ai didi

c - 程序错误: unwanted number in statement

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

我正在编写一个程序,用户输入 2 到 1000000 之间的正整数,如果它是质数,则打印“该数字是质数”,如果不是质数,则打印因式分解的号码。每当我输入一个素数(即:3)时,它都会打印出它是一个素数,但在句点之后它会再次打印该数字(即:数字 3 是素数.3)。我似乎无法找到为什么会发生这种情况,有人知道我在哪里犯了错误吗?

#include <stdio.h>
int main()
{
int N, i, div, flag=0;
printf("Please enter a positive integer: ");
scanf("%d",&N);
for(i=2;i<=N/2;++i)
{
if(N%i==0)
{
flag=1;
break;
}
}
if (flag==0)
printf("The number %d is a prime number.", N);
else
printf("The number %d is not a prime number.\nThe prime factors of %d are:",N, N);

div = 2;

while(N!=0){
if(N%div!=0)
div = div + 1;
else {
N = N / div;
printf("%d ",div);
if(N==1)
break;
}
}
return 0;
}

最佳答案

发生这种情况是因为即使它是质数,后面的 while 循环也会被执行。这会打印 3,这是通过这个语句

printf("%d ",div);
<小时/>

要阻止这种情况,您可以在 while 循环中添加另一个检查,这将阻止它输入是否为质数。

while(N!=0 && flag==1) //flag will be 1 if the number is not prime, and factors are present
<小时/>

或者,您可以将其他部分保留在 `else 语句中,例如

if (flag==0)
printf("The number %d is a prime number.", N);
else
{
printf("The number %d is not a prime number.\nThe prime factors of %d are:",N, N);

div = 2;

while(N!=0){
if(N%div!=0)
div = div + 1;
else {
N = N / div;
printf("%d ",div);
if(N==1)
break;
}
}
}

关于c - 程序错误: unwanted number in statement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33613199/

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