| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 498 人关注过本帖
标题:高手们,都来看看啦
只看楼主 加入收藏
xtx37
Rank: 1
等 级:新手上路
帖 子:18
专家分:8
注 册:2010-11-10
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:6 
高手们,都来看看啦
一道题目:对已知的自然数n,设计一个判断是否为素数的函数,并调用该函数实现将100-200区间的偶数分解为两个素数和的形式。谢谢
2010-11-17 15:31
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:2 
此题岂用劳烦高手,看尔等菜鸟来搞定。
程序代码:
#include<math.h>
unsigned int m_stack[200];
int m_stack_tal = 0;
struct number{
    unsigned int m_left_value;
    unsigned int m_right_value;
};
struct bruker{
    number m_number_value[20];
    unsigned int m_number_tab;
};
bruker m_bruker[100];
bool _primeJudge(unsigned int m_i){
    if(m_i<4){
        if(m_i==1)
            return 0;
        return 1;
    }
    else{
        if(m_i%2==0)
            return 0;
        else{
            int j = sqrt((double)m_i);
            for(int i=3;i<=j;i+=2){
                if(m_i%i==0)
                    return 0;
            }
            return 1;
        }
    }
}
int main()
{
    for(int i=2;i<=200;i++){
        if(_primeJudge(i)){
            m_stack[m_stack_tal++] = i;
            printf("%d是素数",i);
        }
    }
    int sum;
    for(int i=1;i<m_stack_tal;i++){
        for(int j=m_stack_tal-1;j>=i;j--){
            sum = m_stack[i] + m_stack[j];
            if(sum>200)
                continue;
            else if(sum<100)
                break;
            else{
                int x = sum-101;
                int y = m_bruker[x].m_number_tab;
                m_bruker[x].m_number_value[y].m_left_value = m_stack[i];
                m_bruker[x].m_number_value[y].m_right_value = m_stack[j];
                m_bruker[x].m_number_tab++;
            }

        }
    }
    for(int i=0;i<100;i++){
        if(m_bruker[i].m_number_tab==0)
            printf("%d该值不能分解为2个素数的和\n",i+101);
        for(int j=m_bruker[i].m_number_tab-1;j>=0;j--){
            printf("%d 该值可分解为 %d + %d  (%d)\n",i+101,m_bruker[i].m_number_value[j].m_left_value,m_bruker[i].m_number_value[j].m_right_value,j);
        }
    }
    return 0;
}

2010-11-17 17:38
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:2 
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册

书上的  发给你看看  呵呵fflag()为判断素数的方法

[ 本帖最后由 zzgzzg00 于 2010-11-17 18:01 编辑 ]

粗心是大敌
2010-11-17 17:59
freedgun
Rank: 5Rank: 5
等 级:职业侠客
帖 子:147
专家分:302
注 册:2010-11-11
收藏
得分:2 
我爱学习,我是来好好学习的

有什么样的付出,就有什么样的收获!!
2010-11-17 21:17
早安向日葵。
Rank: 2
来 自:洛阳
等 级:论坛游民
帖 子:16
专家分:10
注 册:2010-10-4
收藏
得分:2 
程序代码:
#include <stdio.h>
#include <math.h>
void main()
{
  int m,i,k,h=0,leap=1;
  for(m=100;m<=200;m++)
  {
    k=(int)sqrt(m);
    for(i=2;i<=k;i++)
    if(m%i==0)  break;
    if(i>k) printf("%d  ",m);
    else printf("");
  }
  printf("\n");
  printf("以上为100—200之间所有素数\n");
}

面朝大海,春暖花开。
2010-11-17 21:26
xtx37
Rank: 1
等 级:新手上路
帖 子:18
专家分:8
注 册:2010-11-10
收藏
得分:0 
回复 2楼 hahayezhe
有没有简单点的啊,我们在学函数那部分…
2010-11-17 21:55
落拓
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:58
专家分:173
注 册:2010-9-29
收藏
得分:2 
#include<stdio.h>
#include<math.h>

int f(int n)
{
    int m,i;

    if(n==2||n==3) return 1;
    else if((n&1)==0) return 0;

    m=(int)sqrt(n);
   
    for(i=2;i<=m;i++)
        if(n%i==0) return 0;

    return 1;
}

void main()
{
    int i,j,m;

    for(i=100;i<201;i+=2)
    {
        for(j=2,m=i>>1;j<=m;j++)
            if(f(j)&&f(i-j))
            {
                printf("%d =%3d+%3d\n\n",i,j,i-j);
                break;
            }
    }
}
2010-11-17 22:48
快速回复:高手们,都来看看啦
数据加载中...
 
   



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

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