求一个正整数的所有因子,哪里错了?

来源:百度知道 编辑:UC知道 时间:2024/05/04 18:39:49
void yueshu(int n){
int i=2;
for(;;){
if(n==1) break;
if(n==i)
{n=1; printf("%d",i); return;}
if(n%i==0&&n>i){
printf("%d",i);
n=n/i;
yueshu(n); }
if(n%i!=0)
i++; } }

main(){
yueshu(72);}
72=2*2*2*3*3

我要求打印出2 2 2 3 3 这5个个数

算法有问题啊。我给你重新写了一个,能用,也很容易理解。
#include "stdio.h"
void yueshu(int n)
{
for(int i=1;i<n/2;i++)
{
if(n%i==0)
printf("%d,",i);
}
}

int main()
{
yueshu(72);
return 0;}

void yueshu(int n,int i=2)
{
if(n>=i)
{
if(n%i==0)
{
printf("%d\t",i);
yueshu(n/i,i);
}
else yueshu(n,i+1);
}
return;
}

人家问你的是 用递归求因子,叫你帮忙改一下,你帮他全部都改了算什么啊?
虽然楼上的程序是对的!
但是违反了 楼主的 意思啊!
但是楼主,您的算法的确出现了问题,让人很难理解!
同意楼上的算法

#define PB_ID ct5_3
#include<string>
#include<iostream>
using namespace std;
int main()
{
string str;
int i;
while(cin>>str)
{
if(str == "0")break;
if(str.find("7") == string::npos)