{ q[i] = int(m % 10); m = m / 10; }之后要加一句:
m=a;
否则m的值就会是0,导致死循环。
另外,你对e == E进行判断,是不对的,因为浮点数一般情况下是无法完全相等的。
这个地方不需要这么复杂的逻辑,可以将
double E = (double)(w / a);
double e = (int)(w / a);
if (e == E && log10(e) > 0 && log10(e) < 1)
替换为
int e = w / a;
if(w%a==0)
就可以达到目的了。