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
.
剩下的不管是不是素数,总是执行
我正在编写一个程序,用户输入一个介于 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
.
剩下的不管是不是素数,总是执行