首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
宝塔
V2EX  ›  问与答

如何用算法判断一个数是否是猫扑素数

  •  
  •   des · 2015-08-20 07:32:05 +08:00 · 3559 次点击
    这是一个创建于 1552 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如果不转换成字符串的话

    猫扑素数

    形如以 2 开头, 之后跟任意多个 3 的十进制整数而且是个素数, 则它是猫扑素数. 如 2, 23, 233, 2333, 23333 都是猫扑素数, 而 233333 则不是, 它可以分解为 353 x 661.

    各位有没有好的思路?

    12 回复  |  直到 2015-08-20 10:16:07 +08:00
        1
    des   2015-08-20 08:01:35 +08:00
    我的思路是先 log10 判断位数,再判断( input -( input mod 10^n )) mod 10^n
    最后判断是否是素数
        2
    statm   2015-08-20 08:09:29 +08:00
    不考虑整数上限的话…

        3
    des   2015-08-20 08:14:59 +08:00
    @statm 好吧,还是我算法太弱
    另外 chrom 打不开
        4
    des   2015-08-20 08:17:14 +08:00
    @statm 你忘了判断是否是素数了
        5
    statm   2015-08-20 08:18:15 +08:00 via iPhone
    @des 这个只检查猫扑数。素数的代码一搜一大堆。

    boolean isMopNumber (int i )
    {
    if (i < 10 ) return i == 2;
    else return (i % 10 == 3 ) && isMopNumber (i / 10 );
    }
        6
    chunk   2015-08-20 09:16:12 +08:00
    有意思,顶贴
        7
    wangjie   2015-08-20 09:28:46 +08:00
    function is 猫扑素数($int ) {
    for ($i=0;$<$int;$i+=1 ) {

    }
    }
        8
    wangjie   2015-08-20 09:41:02 +08:00
    按空格就发出来了 QAQ 好二啊
        9
    aheadlead   2015-08-20 10:02:44 +08:00
        10
    xmbaozi   2015-08-20 10:08:02 +08:00
    @statm 只检查猫扑数的话,用正则
    /^23+$/.test (23333 )
        11
    des   2015-08-20 10:11:10 +08:00 via Android
    @xmbaozi 都说了不让转字符串了
        12
    zhengnanlee   2015-08-20 10:16:07 +08:00
    @aheadlead 太笨了吧用那个算法。。 2333 应该很有规律
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2490 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 24ms · UTC 15:01 · PVG 23:01 · LAX 07:01 · JFK 10:01
    ♥ Do have faith in what you're doing.