本人初学C语言,自己编了一个分解质因数的问题。代码已经达到了目标,但是由于编程上的缺陷,造成会多出几个错误的答案出来。原本准备用GOTO从判断中出来,但实在有其他原因,所以不能用GOTO。望高手指点一下,把判断或其他地方修改一下,使他多出来的错误答案消失,在这里谢谢了,如果哪里编得很幼稚,实在是刚刚开始学,请原谅!谢谢!!!(代码如下)
#include <stdio.h> #include <math.h> void fenjie(int x) { ````int y=0,a=0,b=0; ````if(x>2) ````{ ``````y=x; ``````for(a=2;a<=floor(sqrt(x));a++) ``````{ ````````if(x%a==0) ````````{ ``````````printf("%d ",a); ``````````b=b+1; ``````````y=y/a; ``````````fenjie(y); ````````} ``````} ``````if(b==0) ``````{ ````````printf("%d\n",x); ``````} ````} ````else ````{ ``````printf("2\n"); ````} } main() { ``int m; ``while(m!=0) ``{ ````scanf("%d",&m); ````fenjie(m); ``} }
----------------解决方案--------------------------------------------------------
#include <stdio.h> #include <math.h>
int sushu(int x) { int n;
for(n=2;n<=floor(sqrt(x));n++) if( x % n != 0 ) return 0; return 1; }
void fenjie(int x) { int n; for ( n = 2 ; n <= x ; n ++ ) { if ( x % n == 0 ) { printf ("%d ",n ); x = x / n; if ( sushu ( x) ) break ; n=2; } } }
main() { int m; while(m!=0) { scanf("%d",&m); fenjie(m); } } 刚写了一个 觉得这样的东西没有必要用到递归
----------------解决方案--------------------------------------------------------
简简单单就可以了 #include <stdio.h>
int main() { int m,t; while(scanf("%d",&m)==1&&m) { for(t=2; m>1; t++) { if (m%t == 0) { do m/=t;while(m%t == 0); printf("%d ", t); } } printf("\n"); } return 0; }
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
有点不如意之处:
如果能 cout 出这样的式子就更好了,如:24=2×2×2×3
这样可能会更好,对吗?
----------------解决方案--------------------------------------------------------
简简单单就可以了 #include <stdio.h>
int main() { int m,t; while(scanf("%d",&m)==1&&m) { for(t=2; m>1; t++) { if (m%t == 0) { do m/=t;while(m%t == 0); printf("%d ", t); } } printf("\n"); } return 0; }
看了楼主的帖子,又看了看老兄的帖子。觉得有一点欠缺。不知道你注意没有,举个例子:
24吧,楼主的结果会是2223;你的会是23。
声明一下,对你的稍作修改
for(~~~~~)
{
while(m%t==0)
{ m=/t; printf("%d," , t); }
}
~~~~~~~~~~~~~~~~
结果将会是2,2,2,3,
请赐教
----------------解决方案--------------------------------------------------------