| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 863 人关注过本帖
标题:如何提高程序的效率?
只看楼主 加入收藏
瓦药墙
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:218
专家分:556
注 册:2009-9-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
如何提高程序的效率?
程序代码:
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
    int i, j, k, n, l, count;
    while (scanf ("%d", &n) != EOF)
    {
        k = 1;
        printf ("%d =", n);
        if (n == 1 || n == 0)
            printf (" %d\n", n);
        else
        {
        for (i = 2; i <= n; i++)
        {
            count = 0;
            l = 1;
            for (j = 2; j * j <= i; j++)
            {
                if (!(i % j))
                {
                    l = 0;
                    break;       
                }   
            }
            if (l && !(n % i))
            {
                while (n && !(n % i))
                {
                    n /= i;
                    count++;
                }
                if (count > 1)
                {
                    if (k)
                    {
                        printf (" %d^%d", i, count);   
                        k = 0; 
                    }
                    else
                        printf (" * %d^%d", i, count);
                }
                else
                {
                    if (k)
                    {
                        printf (" %d", i); 
                        k = 0;   
                    }
                    else
                        printf (" * %d", i);   
                }
            }
        }
        printf ("\n");
        }
    }
    return 0;
}



结果是:Time Limit Exceed
求改进
qq:413306776
qq群:33505437
搜索更多相关主题的帖子: 效率 
2010-05-07 19:03
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
有意思。
我看看。

南国利剑
2010-05-08 23:23
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:10 
回复 楼主 瓦药墙
我试了,能够运行啊。
你要实现的是什么功能,说明一下。

南国利剑
2010-05-08 23:35
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:10 
按这种思路的话,素数和素数判断那里还可以精简下。。至少可以做到不会TLE
2010-05-09 00:45
瓦药墙
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:218
专家分:556
注 册:2009-9-16
收藏
得分:0 
回复 3楼 南国利剑
题目要求是这样的:
输入n(1 <= n <= 1e9),有多组测试数据:
616
27

输出:
616 = 2^3 * 7 * 11
27 = 3^3
(注意输出空格,但行末不要有空格)

有多组数据测试,第一组通过,第二组数据就超时了。

[ 本帖最后由 瓦药墙 于 2010-5-9 16:30 编辑 ]
2010-05-09 16:26
瓦药墙
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:218
专家分:556
注 册:2009-9-16
收藏
得分:0 
多谢楼上的提示
2010-05-10 09:06
chenwar
Rank: 1
等 级:新手上路
帖 子:12
专家分:7
注 册:2010-5-8
收藏
得分:0 
建议楼主 编程序的时候 变量尽量不要用单字母,用能表示含义的单词最好,这样让别人看程序的时候能明白这个变量到底是想干什么的, 我觉得你这个算法不太好,最后能换个算法
2010-05-10 12:42
冥卫
Rank: 8Rank: 8
来 自:深山老林
等 级:蝙蝠侠
帖 子:280
专家分:772
注 册:2010-4-20
收藏
得分:0 
到底什么功能啊?
2010-05-10 13:31
快速回复:如何提高程序的效率?
数据加载中...
 
   



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

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