gpt4 book ai didi

c - 输出变量变为 0。可能存在逻辑错误

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

我声明“n”,然后将其分配给变量“m”和“num”。当他们到达程序结束时,他们的结果为零。

该程序用于查找 n 的 Phi Totient 函数。一切都完美地工作,直到最后一个 while 循环。

int factorization(int n)
{
int i, j=0, a[14], index=0, m, num;

m=n;
num=n;

for(i=2; i<sqrt(n)+1; i++)
{
if(n%i == 0)
{
n=n/i;
if(a[0]!=i && a[1]!=i && a[2]!=i && a[3]!=i && a[4]!=i && a[5]!=i && a[6]!=i && a[! =i && a[8]!=i && a[9]!=i && a[10]!=i && a[11]!=i && a[12]!=i && a[13]!=i && a[14]!=i)
{
a[index]=i;
index++;
}
i=1;
}
}
a[index]=n;

for (i=index+1; i<=14; i++)
{
a[i]=0;
}
for (i=0; i<=10; i++)
{
printf("%d\n",a[i]);
}

while(a[j] != 0 && a[j] != 1)
{
m=m*((a[j]-1)/a[j]);
j++;
}
printf("Phi of %d = %d", num, m);

return 0;
}

最佳答案

m更改为double并循环至

while (a[j] != 0 && a[j] != 1)
{
m = m * ( ((double)a[j] - 1.0) / (double)a[j] );
j++;
}

如果 m 是整数,则每次除法

((a[j]-1)/a[j]) 

小于 1,则向下舍入为零,乘法变为

m = m * 0

关于c - 输出变量变为 0。可能存在逻辑错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26080511/

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