| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付赛孚耐:软件保护加密专家
身份认证令牌USB KEY   
共有 776 人关注过本帖
标题:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
收藏  订阅  推荐  打印 
zmhdxy
Rank: 3Rank: 3
等级:中级会员
帖子:452
积分:4790
注册:2007-9-27
将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5

下面有两种方法 我想高手能给出更好的方法
#include<stdio.h>
int zhishu(int n)
{
    int i;
    for(i=2;i<=n/2;i++)
        if(n%i==0) return 1;
        if(i>n/2) return 0;
}
void main()
{
    int i,n;
    printf("请输入一个整数:\n");
    scanf("%d",&n);
        if(!zhishu(n)) printf("你输入的是质数:%d=1*%d\n",n,n);
        else
        {
        printf("%d=",n);
        do
                {

                    for(i=2;i<=n/2;i++)
                            if(n%i==0)
                            {
                                printf("%d*",i);
                                n=n/i;
                                break;
                            }
                }
        while(zhishu(n));
        printf("%d\n",n);
        }
}





#include<stdio.h>
void main()
{
    int n,i;
    printf("please input a number:");
    scanf("%d",&n);
    printf("%d=",n);
    for(i=2;i<=n;i++)
    {
        while(n!=i)
        {
            if(n%i==0)
            {
                printf("%d*",i);
                n=n/i;
            }
            else break;
        }
    }
    printf("%d\n",n);
}
搜索更多相关主题的帖子: 质因数  整数  分解  打印  输入  
2007-12-11 22:42
beyond0702
Rank: 3Rank: 3
来自: 桂 林
等级:中级会员
帖子:218
积分:2440
注册:2007-11-17

不知道LZ调试过没有,我运行不了,改一下,可运行了,你写的质数函数那个,它不是每一次都能反回一个值,所以不能运行.int zhishu(int n)
{
    int i,a;
    for(i=2;i<=n/2;i++)
        if(n%i==0) break;
        if(i>n/2) a=1;
        if(a) return 1;
        else return 0 ;
}
但还有就是你的main( ) 最后一个数怎么就输不出,如36. 只输出36=2*2*3*,搞不懂.第二个可以
我是用VC  运行的
2007-12-11 23:32
zmhdxy
Rank: 3Rank: 3
等级:中级会员
帖子:452
积分:4790
注册:2007-9-27

不可能的 我是测试过才发上来的 我刚才也测试过了 对的
有zhishu()是来判断质数的 也就是当n为质数时就跳出来结束

2007-12-12 12:33
wzhgzj
Rank: 2
等级:注册会员
帖子:108
积分:1212
注册:2007-9-6
LZ

麻烦问问lz是什嘛意思?

命运在我手中
2007-12-12 13:21
zmhdxy
Rank: 3Rank: 3
等级:中级会员
帖子:452
积分:4790
注册:2007-9-27

用别的方法写

2007-12-12 17:33
zmhdxy
Rank: 3Rank: 3
等级:中级会员
帖子:452
积分:4790
注册:2007-9-27

本人脑子的细胞有限 想不到别的

2007-12-12 17:34
leeco
Rank: 4
等级:高级会员
威望:8
帖子:870
积分:9666
注册:2007-5-10


程序代码:
#include <stdio.h>

int k;
void fun(int n)
{
    while(n%k)k++;
    if(n/k!=1){
        printf("%d*",k);
        fun(n/k);
    }   
    else{
        printf("%d\n",k);
    }   
}   

int main()
{
    int n;
    while(scanf("%d",&n)!=EOF){
        k=2;
        printf("%d=",n);
        fun(n);
    }   
}
2007-12-12 21:41
zmhdxy
Rank: 3Rank: 3
等级:中级会员
帖子:452
积分:4790
注册:2007-9-27

谢谢 谢谢

2007-12-12 23:00
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.066105 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved