Program error: unwanted number in statement

Program error: unwanted number in statement

我正在编写一个程序,用户输入一个介于 2 和 1000000 之间的正整数,如果它是一个素数,它会打印 "The number is a prime number",如果它不是一个素数,它会打印因式分解号码。每当我输入一个素数(即: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;
        }
    }
}

您忘记了 else 语句的括号。所以else(不是质数)只适用于printf.

剩下的不管是不是素数,总是执行