我需要制作一个程序,要求用户输入不确定的数字,并以0号结束输入。
输入后,我需要对输入中的每个数字进行素数分解。
我现在有这个,但它只适用于输入的第一个数字,然后结束程序。
int main()
{
long long number,div;
while(scanf("%lli",&number)==1){
printf("The prime factors of %lli are: \n",number);
div = 2;
while(number!=0){
if(number%div!=0)
div = div + 1;
else {
number = number / div;
printf("%lli ",div);
if(number==1)
break;
}
}
printf("\n");
return 0;
}
return 0;
}
答案 0 :(得分:1)
int main()
{
long long number,div;
while(scanf("%lli",&number)==1){
printf("The prime factors of %lli are: \n",number);
div = 2;
while(number!=0){
if(number%div!=0)
div = div + 1;
else {
number = number / div;
printf("%lli ",div);
if(number==1)
break;
}
}
printf("\n");
// return 0; // you should remove this return as it cause to exit the program
}
return 0;
}
返回语句导致退出程序。或者尝试从调用函数的地方返回。
所以请尝试上面的代码。
答案 1 :(得分:0)
将循环条件扩展为0:
int main()
{
long long number,div;
int loop = ( 1 == scanf("%lli",&number) ) && ( 0 != number );
while( loop )
{
printf("The prime factors of %lli are: \n",number);
// ..
printf("\n");
loop = ( 1 == scanf("%lli",&number) ) && ( 0 != number );
}
return 0;
}