注册 登录
编程论坛 C++教室

为什么就得不到正确的结果

Jackzdong 发布于 2007-03-18 22:50, 456 次点击

#include <iostream>
#include <cmath>
using namespace std;

int main() //分解质因数
{
int i, j;
cout << "请输入要分解质因数的数字:";
cin >>i;
cout<< i << "= 1";
for(j=2; j<=i; ++j)
{
if(j==i)
cout<< "*" << i << endl;
else if(i%j==0)
{
cout<< "*" <<j;
i = i/j;
}
}

return 0;
}

只要我输入的数包含4和9这两个因数, 就得不到正确的结果, 我自己也分析了一下, 分解4和9时 运行for(j=2; j<=i; ++j)就提前跳出去了, 大家帮我分析一下, 应该怎么改一下,谢谢各位大虾了

4 回复
#2
Jackzdong2007-03-18 23:18

还是没有人来解答, 希望明天睁开眼睛能看到答案,晚安

#3
yuyunliuhen2007-03-18 23:59

#include <iostream>
// #include <cmath>
using namespace std;

int main()
{
int i, j;
cout << "请输入要分解质因数的数字:";
cin >>i;
cout<< i << "= 1";
for(j=2; j<=i; ++j)
{
if(j==i)
cout<< "*" << i << endl;
else
while(i%j==0) //改这个地方就好
{
cout<< "*" <<j;
i = i/j;

}
}

return 0;
}


#4
aipb20072007-03-19 09:40

楼上的正解啊,也可以这样:
int main() //分解质因数
{
int i, j;
cout << "请输入要分解质因数的数字:";
cin >>i;
cout<< i << "= 1";
for(j=2; j<=i; ++j)
{
if(j==i)
cout<< "*" << i << endl;
else if(i%j==0)
{
cout<< "*" <<j;
i = i/j;
j = 1; //改了这个地方
}
}

return 0;
}


#5
Jackzdong2007-03-19 13:00
回复:(yuyunliuhen)#include // #...

谢谢楼上的几位大哥了, 基本上都看懂了

FOR以后的第一个IF好像也可以不要了, I%f==0 包含了i == f

谢谢了

1