| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4057 人关注过本帖
标题:合数分解成质数之和
只看楼主 加入收藏
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
收藏
得分:0 
N是一个合数,求出其最多由多少个最小不同质数和组成,并要求按小到大输出这些质数。
2008= 2+ 3+ 5+ 7+ 11+ 13+ 17+ 19+ 23+ 29+ 31+ 37
      + 41+ 43+ 47+ 53+ 59+ 61+ 67+ 71+ 73+79+83
      + 89+ 97+ 101+ 103+ 107+ 109+ 113+ 127+ 131
      + 137+2+19
其中有33个最小的不同质数
请问我上面的分析对不?你的题目的意思是不是这个意思?

♂ 死后定当长眠,生前何须久睡。♀
2008-04-11 22:40
qitian
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-4-11
收藏
得分:0 
回复 9# 的帖子
多谢上面几位的帮助,只是大家好像都没注意到这些质数之和要等于给定的数
我运行了几位的程序,结果都不正确。我有一组参考数据,是对n=1998来说的,它可以分解成以下数据。
3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107  109 113 131 137 139  

我的那个程序对这个数据是正确的。
2008-04-11 23:17
qitian
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-4-11
收藏
得分:0 
回复 11# 的帖子
你给的数据好像有重复的,题目要求这些质数不能相同。
对n=1998来说的,它可以分解成以下数据。
3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107  109 113 131 137 139  
感兴趣的话可以先用这个数据试试。
2008-04-11 23:20
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
越想越恶心,除了搜索偶想不出什么好办法。。。。

" border="0" />
2008-04-11 23:41
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
我们的程序都有缺陷..就是应该dp比如10这个数可以分为3和7.但是用我们的程序是没办法实现的...因为中间有个5..有谁可以帮我的改一下...我要回去了...呵呵

学习需要安静。。海盗要重新来过。。
2008-04-11 23:41
yd4433
Rank: 1
等 级:新手上路
帖 子:404
专家分:0
注 册:2008-3-9
收藏
得分:0 
针对2008我写了个程序 你看下  
#include<stdio.h>
#define N 33
int spt(int m)
{
     int i=2;
      while(m%i!=0)
          i++;
          if(m==i)
              return 1;
        else
           return 0;
}      
     
void main()
{  int n,m,c=0,i,j; static a[N];
    printf("请输入2008");
    scanf("%d",&n);
   
     j=0;
     for(i=2;i<=131;i++)
     {     
          if (spt(i)>0)
          {        
                  a[j]=i;
                    n=n-i;
               j++;
          }
      }   
         for(j=0;j<N;j++)
         {
           if (spt(n+a[j])>0)
           {
              a[j]=n+a[j];
                 break;
           }      
              
         }
      for(j=0;j<N;j++)
      {
          printf("%d\t",a[j]);
      
      }
} 写的是苯法子 只是针对2008写的  么辙了 谁有好的思路 可以说下参考下

------...-.-..-...-----........-------.......----.....------....||- - !
2008-04-11 23:48
qitian
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-4-11
收藏
得分:0 
有点难度吧,这是我们学校研究生复试题,没隔几年就出一次,曾考过1998,2006,过两天就复试了,万一又出个2008就傻了。
2008-04-11 23:50
yd4433
Rank: 1
等 级:新手上路
帖 子:404
专家分:0
注 册:2008-3-9
收藏
得分:0 
[bo]以下是引用 [un]qitian[/un] 在 2008-4-11 23:20 的发言:[/bo]

你给的数据好像有重复的,题目要求这些质数不能相同。
对n=1998来说的,它可以分解成以下数据。
3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107  109 113 131 137 139  
感兴趣的 ...


这些都是连续的 素数 当然好写 用我貌似是4#最前面给的程序 写就好了 但是总有特殊的 有没人有好的思路 分享下

------...-.-..-...-----........-------.......----.....------....||- - !
2008-04-11 23:52
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
楼主,请说一下输入的数最大的可能取值
有思路的话偶试一下

" border="0" />
2008-04-11 23:56
yd4433
Rank: 1
等 级:新手上路
帖 子:404
专家分:0
注 册:2008-3-9
收藏
得分:0 
[bo]以下是引用 [un]qitian[/un] 在 2008-4-11 23:50 的发言:[/bo]

有点难度吧,这是我们学校研究生复试题,没隔几年就出一次,曾考过1998,2006,过两天就复试了,万一又出个2008就傻了。


  那就凑把  我上面的那个可以酸是凑出来的  需要我注释下么   应该有好的酸法求出来 HOHO  我再好好想下

------...-.-..-...-----........-------.......----.....------....||- - !
2008-04-11 23:57
快速回复:合数分解成质数之和
数据加载中...
 
   



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

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