注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

笑遍世界@网易博客

明天还会在路上……

 
 
 

日志

 
 
关于我

Stay hungry, stay foolish. 工作用脑,生活用心! 走过山重水复,必然迎来柳暗花明! 受苦的人没有悲观的权利,远征的人没有流泪的资格。 Live each day as if we should die tomorrow.

网易考拉推荐
 
 

可恶的小程序(关于找素数)  

2007-09-01 00:03:08|  分类: 记录生活 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
      昨晚看一个NCRE的3级一个C语言小程序,搞得头都大了,花了两三个小时的时间,到后来凌晨2点左右才发现了问题所在,比较可恶。现在要将其来处来曝光一下,”以泄心头之恨“,哈哈  (其实主要怪自己太笨蛋了 :-)
       它不过就是一个找一定条件下的素数的问题吗?我在NCRE的2级时候机考才遇见了,那次就没有搞定它,差点害得我二级通不过。
       其实,关键是那个标志的变量f,我开始一直把它在声明中初始化了,因而就没有到”for(i=100;i<1000;i++)“循环里面去初始化,如果不是每次循环都初始化一次,那么第一次子循环后就会将f置0,使得判别素数的那个子循环” for(j=2;j<=k&&f==1;j++)“得不到运行。汗!   我只有删除这部分,再修改那部分,不断地重复、修改,终于后来被我发现了。哈哈哈       从此,我再也不怕找素数这个问题了。尽管这个是最最SB的小儿科入门级基础算法,但是我觉得还刚好适合我这样的傻瓜级别的人。
       搞定费力搞定这个小问题后,居然就美美地睡了一晚上。真是的……

简单的30行左右的源程序如下:
#include "stdio.h"
#include "math.h"
main()
{
    int i,j,k,f,a,b,c;
    int cnt,sum;
    cnt=sum=0;
    printf("In this satuation, from 100~1000 prime numbers are:\n");
    for(i=100;i<1000;i++)
    {
        a=i%10;
        b=(i%100)/10;
        c=i/100;
        f=1;/*注意啊,原来的失误就在此处啊  一定要在循环里面初始化标志f啊,否则f=0成定局*/
        k=(int)sqrt(i);
        for(j=2;j<=k&&f==1;j++)
        {
            if(i%j==0)
            f=0;
        }
        if(f==1 && c==(a+b)%10)
        {
            cnt++;
            sum+=i;
            printf("%d ",i);
        }
    }
    printf("\nQuantity is: %d\n",cnt);
    printf("Sum is: %d\n",sum);
}
  评论这张
 
阅读(387)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017