我已经为因子分解做了一个delphi程序,它看起来像这样:
40是数字,单击“Scomponi”时输出正确(2 ^ 3 * 5 = 40)。我做了一个C程序应该做同样的事情,但我有这个输出:
如您所见,右侧的数字是正确的(2 ^ 3 * 5),但左侧的数字则不正确。这是我写的代码:
int main()
{
long a,b=2;
printf("------------------------------------------------ \n \n");
printf("Inserisci il numero di cui vuoi la scomposizione \n"); //input number (it's the 40 of the example)
scanf("%d", &a);
printf("\n------------------------------------------------ \n\n");
printf("Scomposizione: \n \n"); //Decomposition
while(a>1)
{
if(a%b == 0)
{
printf("%d \t \t | %d \n",a,b);
a=a/b;
}
else
{
b++;
}
printf("%d", a);
}
printf("\n------------------------------------------------ \n\n");
getch();
return 0;
}
我可以做些什么来解决这个问题?
答案 0 :(得分:8)
else
{
b++;
}
printf("%d", a);
}
最后printf
不应该在这里。删除它。
作为旁注:
a
和b
的类型为long
。
所以而不是:
scanf("%d", &a);
你必须使用:
scanf("%ld", &a);
printf
相同,请使用%ld
转化规范,而不是%d
。