标题:合数分解成质数之和
取消只看楼主
qitian
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-4-11
 问题点数:0 回复次数:5 
合数分解成质数之和
N是一个合数,求出其最多由多少个[un]最小[/un]不同质数和组成,并要求按小到大输出这些质数。
我自己弄了个程序,但是存在些问题(程序中说明处),各位看看怎么改才好。
如果有更好的程序,那就更好了。
对N=2008:
#include "stdio.h"
int ISzhishu(int num){
    int i;
    if(num==2)
        return 1;
    if(num==1)
        return 0;
        
    for(i=2;i<=num-1;i++)
    {
        if(num%i==0)
             return 0;
    
    }
    return 1;
}

main()
{
    int i;
    int sum=0;
    int temp;
    int flag=1;
    int a[200];
    for(i=1;i<200;i++)
        a[i]=-1;
    i=1;
    while(sum<2008)
    {
         if(ISzhishu(i)==1)
         {
              sum+=i;
              a[i]=1;
         }
    i++;
        
    }
    sum-=2008;
    
    temp=sum;

    while(flag==1)
    {
      while(ISzhishu(temp)==0)  
     {
        temp--;
     }
      a[temp]=-1;
  
      if(sum>temp )
      //此处即存在问题,即可能最后会使sum =1;temp =0,成了死循环
      {
                temp=sum-temp;
          sum=temp;
      }
      else if(sum==temp )
      {
          flag=0;
      }
          
    }
    sum = 0;
   for(i=1;i<200;i++)
   {
    if(a[i]==1)
    {
    sum += i;
    printf("%d ",i);
    }
   }printf(" sum=%d", sum);

}
搜索更多相关主题的帖子: 合数 质数 之和 分解 
2008-04-11 19:52
qitian
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-4-11
得分:0 
回复 3# 的帖子
你没看清题目要求,是最小不同的质数 。仔细考虑考虑。
2008-04-11 20:56
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
qitian
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-4-11
得分:0 
有点难度吧,这是我们学校研究生复试题,没隔几年就出一次,曾考过1998,2006,过两天就复试了,万一又出个2008就傻了。
2008-04-11 23:50
qitian
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-4-11
得分:0 
回复 19# 的帖子
一般情况就是4位数吧
2008-04-11 23:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-208474-1-1.html




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

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