7-17 小红帽与大灰狼的故事

7-17 小红帽与大灰狼的故事(20 分)

从前有个可爱的小姑娘叫小红帽。一天,小红帽蹦蹦跳跳的要

去奶奶家看望奶奶,奶奶住在村子外面的森林里,离小红帽家

有很长一段路。小红帽刚走进森林就碰到了一条狼。小红帽并

不知道狼是坏家伙,所以一点儿也不怕它。

狼说:“你好啊,小红帽!”

“你好,狼先生!”小红帽说

“小红帽,这么早要到哪儿去呀?”

“我要到奶奶家去。”

大灰狼一听,露出的贪婪的目光,想要吃掉小红帽,但是大灰狼曾经答应过梦工厂的学长,

当想要吃掉小朋友的时候要让小朋友解答一道题目,如果小朋友答对,就放小朋友一条生路,

此时,狼说:“小红帽,我这里有一道题目,如果你能够答对,我就放你一条生路,如果回答错,

我就把你当成我的午餐。我现在要求你找到我的所有“幸运数字”,所谓“幸运数字”是与该数字相邻的两个

数字都是素数,如数字4就是“幸运数字”(4左边是3,右边是5,3和5都是素数)。”

然而,此时的小红帽已经吓傻了,聪明的你能够帮助小红帽解围吗?

输入格式:

输入一个数值n(0<=n<=1000000)。

输出格式:

输出 n以内(不包含n)“幸运数字”的个数

输入样例:

在这里给出一组输入。例如:

7

输出样例:

在这里给出相应的输出。例如:

2

 

分析:其实是一道水得不能再水的题,只是我竟然不知道素数筛选法............吓死我了,看了一下百度百科后恍然大悟

这个题题就是要用素数筛选法先把所有的<=n的素数都记下来,然后判断就好了,如果不用素数筛选法时间复杂度会比较高,有一个点会超时的,刚开始学lua这门语言,发现这门语言做题还挺好用的,比不上C++,但比C好用多了

闲话少说,上代码

     n = io.read("*number")  --读入一个数

     result = 0
     prime = {}      --素数数组,1表示是素数,0表示不是素数

    for i = 1,n do
    prime[i] = 1
    end

    prime[1] = 0

    prime[0] = 0

    for i=2,n do          --筛选素数,先认为所有的都是素数,然后找到第一个是素数的,将它的所有倍数都设置为不是素数
     if prime[i] == 1 then
         for j = i*2,n,i do
          prime[j] = 0
        end
      end
    end


    for i = 0,n-1 do                              --找到所有的幸运数,并统计其数量
       if i>=2 and prime[i-1]==1 and prime[i+1]==1 then
         result = result + 1
        end
    end

    print(result)                               --打印幸运数的数量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值