| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 627 人关注过本帖
标题:任一偶数分成两素数的和。
只看楼主 加入收藏
沈默
Rank: 1
等 级:新手上路
帖 子:11
专家分:9
注 册:2009-9-29
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
任一偶数分成两素数的和。
编程时缓存空间不够用,结果不能完全显示,怎么办?哪位高手指点一下!
如下面的程序应从四开始,结果却从36开始的!
#include"stdio.h"
void main()
{

    int i,j,m,k,n,cnt=0;
    int b[100];
    int flag=0;
    b[0]=2;
    cnt=1;
    for(i=3;i<100;i++)
    {
        for(j=2;j<i;j++)
            if(i%j==0)
            {   
                flag=1;
                break;            
            }
        if(flag==0)
            {
            b[cnt]=i;        
            cnt++;        
            }
        flag=0;
    }
   
for(k=4;k<=100;k=k+2)
    for(m=0;m<cnt;m++)
            for(n=0;n<cnt;n++)
            {if(k==b[m]+b[n])
            printf("%d=%d+%d\n",k,b[m],b[n]);
            }
   
                        
}
搜索更多相关主题的帖子: 偶数 素数 
2009-09-29 13:16
mohao163
Rank: 5Rank: 5
来 自:南宁
等 级:职业侠客
威 望:2
帖 子:79
专家分:383
注 册:2009-9-25
收藏
得分:5 
程序代码:
#include<stdio.h> 
void main() 
{ 
 
    int i,j,m,k,n,cnt=0; 
    int b[100]; 
    int flag=0; 
    b[0]=2; 
    cnt=1; 
    for(i=3;i<100;i++) 
    { 
        for(j=2;j<i;j++) 
            if(i%j==0) 
            {     
                flag=1; 
                break;             
            } 
        if(flag==0) 
            { 
            b[cnt]=i;         
            cnt++;         
            } 
        flag=0; 
    } 
     
for(k=4;k<=100;k=k+2) 
    for(m=0;m<cnt;m++) 
            for(n=0;n<cnt;n++) 
            {if(k==b[m]+b[n]) 
                fflush(stdin); 
            printf("%d=%d+%d\n",k,b[m],b[n]); 
            } 
     
                         
} 
加一句fflush(stdin);吧,清空缓存区。  不过,我发现这么加不行,得看看逻辑关系

[ 本帖最后由 mohao163 于 2009-9-29 13:36 编辑 ]
2009-09-29 13:33
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:13 
#include"stdio.h"
void main()
{
 
    int i,j,m,k,n,s=0,cnt=0;
    int b[100];
    int flag=0;
    b[0]=2;
    cnt=1;
    for(i=3;i<100;i++)
    {
        for(j=2;j<i;j++)
            if(i%j==0)
            {
                flag=1;
                break;
            }
        if(flag==0)
            {
            b[cnt]=i;
            cnt++;
            }
        flag=0;
    }
printf("\n\n\n");
for(k=4;k<=100;k=k+2)
    for(m=0;m<cnt;m++)
            for(n=0;n<cnt;n++)
        {if((k==b[m]+b[n])&&(m<=n))
        {
        printf("%d=%d+%d ",k,b[m],b[n]);
        s++;
        if(s%8==0)
        printf("\n");
        }
            }
 
 
}
试试这个,符合你的要求吗?
我把s=a+b 和s=b+a只留下了一个。要是都像保留,就去掉限制条件。

[ 本帖最后由 m456m654 于 2009-9-29 13:44 编辑 ]
2009-09-29 13:43
mohao163
Rank: 5Rank: 5
来 自:南宁
等 级:职业侠客
威 望:2
帖 子:79
专家分:383
注 册:2009-9-25
收藏
得分:2 
晕,原来是加了\n显示屏不能完全显示,其实4开始已经打印出来了,只是console不能显示那么长,不是缓存区的问题
2009-09-29 13:56
evanya
Rank: 2
等 级:论坛游民
帖 子:31
专家分:45
注 册:2009-9-28
收藏
得分:0 
看了一下,3楼的改的不错,就是这样的,我也学学啊,呵呵!
2009-09-29 13:56
mohao163
Rank: 5Rank: 5
来 自:南宁
等 级:职业侠客
威 望:2
帖 子:79
专家分:383
注 册:2009-9-25
收藏
得分:0 
你可以定义一个FILE *fp 把记录写到TXT里面
2009-09-29 13:58
沈默
Rank: 1
等 级:新手上路
帖 子:11
专家分:9
注 册:2009-9-29
收藏
得分:0 
哦,我找到问题所在了,谢谢各位了哈!
2009-09-30 12:52
沈默
Rank: 1
等 级:新手上路
帖 子:11
专家分:9
注 册:2009-9-29
收藏
得分:0 
回复 4楼 mohao163
console是啥意思?是屏幕缓冲区大小吗?
2009-09-30 12:57
沈默
Rank: 1
等 级:新手上路
帖 子:11
专家分:9
注 册:2009-9-29
收藏
得分:0 
回复 2楼 mohao163
这样运行的结果不行,不过ffush(sdin);这个函数不错!谢了了!
2009-09-30 13:01
沈默
Rank: 1
等 级:新手上路
帖 子:11
专家分:9
注 册:2009-9-29
收藏
得分:0 
回复 3楼 m456m654
符合!!多谢你的提醒!
2009-09-30 13:15
快速回复:任一偶数分成两素数的和。
数据加载中...
 
   



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

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