| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 521 人关注过本帖
标题:用VC6.0的大家过来HAPPY 一下,HAPPY后记得给我个解决方案啊
只看楼主 加入收藏
b465513006
Rank: 2
等 级:论坛游民
威 望:1
帖 子:70
专家分:48
注 册:2011-3-18
结帖率:73.33%
收藏
已结贴  问题点数:20 回复次数:5 
用VC6.0的大家过来HAPPY 一下,HAPPY后记得给我个解决方案啊
#include <stdio.h>

int p[1000000001] = {0, 0, 1, 1, 0, 1};
int prime[1000000002]={2,3,5};

int creat_prime(int prime[],int n,int total)
{
       int    i;
       int    j;
       int    gab=2;
       int    count;
    for(i=7;i<=n;i+=gab)
    {
        count=1;
        gab=6-gab;
        for(j=0;prime[j]*prime[j]<=i;j++)
        {
            if(i%prime[j]==0)
            {
                count=0;
                break;
            }
        }
        if(count)
        {
            prime[total]=i;
            p[i] = 1;
            total++;
            break;
        }
    }
    return total;
}

int main()
{    int    total=3;
    int    i;
    int    n=10001;

    total=creat_prime(prime,n,total);
    while (scanf("%d", &n), n)
    {
        total = 0;
        if (p[n - 2] && n - 2 != 2) total++;
        for (i = 3; i < n / 2; i++)
        {
            if (p[i] && p[n - i])
                total++;
        }
        if (total==0)
            printf ("No");
        else
            printf ("Yes");
    }
    return 0;
}


这是一段代码,目的是求一个数是否为偶素数(一个可以化为两个素数之和的素数称为偶素数。),放到VC6.0编译会得到意想不到的后果,大家试试哈!!!还有如果谁知道这是怎么回事了还请告诉我一声哈。谢谢啦!
        
搜索更多相关主题的帖子: 解决方案 
2011-07-26 11:38
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:7 
好久不见,我给你回的邮件收到了么?你们学校的ACM很多题目好象有问题,我很想和你们的管理员直接交流一下,可以帮我问问他吗?
如果他愿意,请他把他的Email给我。

关于偶素数这个题我也做过了,不必这么复杂的。先做一下分析。
根据偶素数的定义,一个可以化为两个素数之和的素数称为偶素数。
素数中除了2之外全是奇数。而一个奇数只能分解成一个偶数与一个奇数的和。
所以一个偶素数要分解成两个素数的和,其中一个必然是2。
所以要判断数A是不是偶素数,只要判断A和A-2是不是素数就可以了。
下面是我的AC代码
程序代码:
#include <stdio.h>
#include <math.h>

int isPrime(int a)
{
    int i, t;
    if(a < 2) return 0;
    if(a == 2) return 1;
    if((a & 1) == 0) return 0;
    t = sqrt(a);
    for(i = 3; i <= t; i += 2)
        if((a % i) == 0) return 0;
    return 1;
}

int main()
{
    int n;
    while(scanf("%d", &n) != EOF)
    {
        if(!isPrime(n)){ printf("No\n"); continue;}
        if(!isPrime(n - 2)){ printf("No\n"); continue;}
        printf("Yes\n");
    }
    return 0;
}



[ 本帖最后由 beyondyf 于 2011-7-26 12:04 编辑 ]

重剑无锋,大巧不工
2011-07-26 12:02
b465513006
Rank: 2
等 级:论坛游民
威 望:1
帖 子:70
专家分:48
注 册:2011-3-18
收藏
得分:0 
回复 楼主 b465513006
呵呵。。。是啊,那个1002的程序好像有点问题,我用数据测试了一下答案不对啊,这是我们管理员的qq,你联系他吧。。。664301573                  
2011-07-26 12:48
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:7 
回复 2楼 beyondyf
你又来了,算法还是那么令人蛋疼。。。

My life is brilliant
2011-07-26 14:08
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
回复 2楼 beyondyf
这次的算法我终于看懂了。

My life is brilliant
2011-07-26 14:14
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:7 
int n;
while((scanf("%d", &n)) != EOF)
printf("yes");
2011-07-26 14:56
快速回复:用VC6.0的大家过来HAPPY 一下,HAPPY后记得给我个解决方案啊
数据加载中...
 
   



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

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