| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1100 人关注过本帖
标题:我想用递归实现合数分解,编译通过,执行错误,还望高手指教
只看楼主 加入收藏
SeraphJack
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-3-19
收藏
 问题点数:0 回复次数:6 
我想用递归实现合数分解,编译通过,执行错误,还望高手指教
以下是程序代码:


#include<stdio.h>
#include<math.h>
#define COUNT 6542

unsigned int zs[COUNT];                          //用于存放素数

void qzsf();
void fj();

void qzsf ()                                     //求素数,并存放在zs
{
    static unsigned int zs[COUNT];
    int z = -1;
    int i,j;
    double k;
    for(i = 2;i < 65535;i++)
    {
        k = sqrt (i);
        for(j = 2;j <= k;j++)
            if(i%j == 0)
                break;
        if(j>k)
            zs[++z] = i;
    }
}

void fj (unsigned num)                              //用递归输出结果
{
    int i;
    static unsigned int zs[COUNT];
    for(i = 0;zs[i] <= num;i++)
        if(num%zs[i] == 0)
        {
            printf ("%d*",zs[i]);
            fj (num%zs[i]);
        }
        else
        {
            printf ("%d\n",num);
        }
}

main()                                             //调用fj函数,对输入的数分解
{
    unsigned int num;
    printf ("The number:");
    scanf ("%ld",&num);
    fj (num);
}
搜索更多相关主题的帖子: 合数 递归 分解 编译 
2008-04-22 21:38
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
你找孔名的帖子看吧..好理解..也比较全

学习需要安静。。海盗要重新来过。。
2008-04-22 21:48
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<math.h>
void answer(int num,int m,int a/*?????ò×?*/)
{
    if(a<m)
    {
       num%a==0?printf("%d,",a),num/=a:a++;
       answer(num,m,a);
    }
    else printf("%d",num);
}
int main(void)
{
    int n;
    while(scanf("%d",&n)!=EOF)
       answer(n,n,2);
   return 0;
}

樱花大战,  有爱.
2008-04-22 21:52
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
没反应?难道我写错呢?

樱花大战,  有爱.
2008-04-23 17:37
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
收藏
得分:0 
原题不是要合分解的数尽可能多么,还是另一题

" border="0" />[color=white]
2008-04-23 17:44
SeraphJack
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-3-19
收藏
得分:0 
不好意思,我们大队对上网时间有限制,没能在线等,谢谢各位的帮助,我先看看
2008-04-23 18:20
faminxmu
Rank: 3Rank: 3
来 自:厦门
等 级:论坛游侠
帖 子:191
专家分:106
注 册:2008-4-23
收藏
得分:0 
最原始的方法
#include<stdio.h>
void main()
{
     int y,x;
     scanf("%d",&y);
     if(y!=1)printf("1 ");/*实现1的输出*/
     void answer(int x);
     answer(y);
     system("pause");
     }
     void answer(int x)/*定义函数实现该分解目的*/
     {
     int i,j,k;
     int prime(int x);
     if(prime(x)==1) printf("%d",x);
     else
     for(i=2;i<x;i++)
     if(x%i==0 && prime(i)==1)
     {printf("%d ",i);
     k=x/i;
     answer(k);
     break;
     }
     }
       int prime(int x)/*判断是否为素数*/
     {
         int i,j,z;
         if(x==1||x==2) z=1;
         else{
         for(i=2;i<x;i++)
         {z=0;
          if(x%i==0)break;
          z=1;
          }
          }
         return(z);
         }

在虚拟的世界中寻找目标。
2008-04-24 12:18
快速回复:我想用递归实现合数分解,编译通过,执行错误,还望高手指教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030399 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved