| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1225 人关注过本帖, 1 人收藏
标题:怎么做 一直都是错 老师总是说一半 郁闷
只看楼主 加入收藏
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
回复 18楼 巧若拙
^_^ 我改了一下,又快了20倍,一百万以内只需要0.124秒,一千万以内时间长了点,要4.312秒

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

int main( void )
{
    //unsigned n;
    //printf( "%s", "请输入一个正整数N,以查找相亲数对,数对中的每个数值均不大于N:" );
    //if( scanf("%u",&n) != 1 )
    //    return 1;
    unsigned n = 1000000;
    clock_t t0 = clock();

    unsigned* p = (unsigned*)calloc( n, sizeof(unsigned) );
    if( !p )
        return 2;

    for( size_t i=2; i*2<=n; ++i )
        for( size_t j=i*2; j<=n; j+=i )
            p[j-1] += i;

    for( size_t i=1; i<=n; ++i )
        if( p[i-1]>=i && p[i-1]<n && i==p[p[i-1]]+1)
            printf( "%u\t%u\n", i, p[i-1]+1 );

    clock_t t1 = clock();
    printf( "--- %.3lf ---\n", (t1-t0+0.0)/CLOCKS_PER_SEC );
    free( p );
    return 0;
}

2014-12-12 09:43
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
回复 21楼 rjsp
这个太凶惨了

要好好看看学学

Only the Code Tells the Truth             K.I.S.S
2014-12-12 10:52
巧若拙
Rank: 4
来 自:宁波余姚
等 级:业余侠客
威 望:1
帖 子:159
专家分:273
注 册:2014-8-24
收藏
得分:0 
求余运算转化为加法运算,太厉害了!
2014-12-12 11:26
快速回复:怎么做 一直都是错 老师总是说一半 郁闷
数据加载中...
 
   



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

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