无心人 发表于 2008-11-24 11:17:41

import Primes

readInt :: IO Int
readInt = readLn

getBlock b 0 = , b <- ]
getBlock b 1 = , b <- , c <-]
getBlock b p = , b <- , c <- , d <- ]                                 
                                                   
multiBlock b n p = (p \`mod\` 10^(n \`mod\` b)) * 10^(b * (n \`div\` b))+ fromIntegral(sum (take (n \`div\` b) (iterate (10^b*) p)))

isczPrime b n = [(ns, pp) | ns <- ,
                              ns \`mod\` b /= 0,
                              let pps = map (multiBlock b ns) (getBlock b ((n \`mod\` b)-1)),
                              pp <-pps,
                              isPrime pp
                            ]
         
main = do
         putStrLn "Input Digits: "
         n <- readInt
         putStrLn "Input Block Size: "
         b <- readInt
         print (isczPrime b n)

gxqcn 发表于 2008-11-24 12:39:09

这是 C++ 代码,
请先安装 HugeCalc 算法库,而后编译运行,
可以运行在任何 32 位或 64 位 windows 下。

无心人 发表于 2008-11-24 16:51:53

21#程序改好了
不知道谁能写个别的语言的
相互印证
下面是编译后的程序

gxqcn 发表于 2008-11-24 21:41:17

原帖由 无心人 于 2008-11-24 16:51 发表 http://bbs.emath.ac.cn/images/common/back.gif
21#程序改好了
不知道谁能写个别的语言的
相互印证
下面是编译后的程序
595

下载了你的程序,可惜结果一闪而过,无法保留。

无心人 发表于 2008-11-25 07:59:49

呵呵
没设定保存到文件

不过,很容易写保存程序
就增加一句

你重定向到文件吧

isczPrimen > czPrimes.txt
呵呵

gxqcn 发表于 2008-11-25 08:08:42

我在 WinXP cmd 下,无论用 > 还是 >> 到文件,都不能成功。
因为无法输入参数了,得到一个0字节空文件。

mathe 发表于 2008-11-25 08:17:59

不会的,不过输入数字参数需要注意。
比如程序名为test.exe,程序需要参数10,那么可以采用命令
test.exe 10 1>out
其中1>out表示将标准输出重定向到文件out.
如果省略了1而且10和>之间没有留空格,那么命令行会将数字10当成文件句柄从而没有输入参数了

gxqcn 发表于 2008-11-25 08:36:44

学了一招。:)

但用在无心人提供的程序仍然不灵,
可能是他输入输出代码非标准问题。

无心人 发表于 2008-11-25 08:40:26

:)
可是我这里可以啊

无心人 发表于 2008-11-25 08:45:23

import Primes

readInt :: IO Int
readInt = readLn

getBlock b 0 = , b <- ]
getBlock b 1 = , b <- , c <-]
getBlock b p = , b <- , c <- , d <- ]
                  
multiBlock b n p = (p \`mod\` 10^(n \`mod\` b)) * 10^(b * (n \`div\` b))+ fromIntegral(sum (take (n \`div\` b) (iterate (10^b*) p)))

isczPrime b n = [(ns, pp) | ns <- ,
                              ns \`mod\` b /= 0,
                              let pps = map (multiBlock b ns) (getBlock b ((ns \`mod\` b)-1)),
                              pp <-pps,
                              isPrime pp
                            ]
         
main = do
         putStrLn "Input Digits: "
         n <- readInt
         putStrLn "Input Block Size: "
         b <- readInt
         let result = isczPrime b n
         let fileName = "P" ++ show(n) ++ "_" ++ show(b) ++ ".TXT"
         writeFile fileName (show result)


=============================
重新编译的,保存到文件


本帖最后由 无心人 于 2008-11-25 09:22 编辑
页: 1 2 [3] 4
查看完整版本: 串珠素数问题