找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5456|回复: 11

一道数学编程题:有兴趣的来试试

[复制链接]
发表于 2015-11-12 22:19:41 | 显示全部楼层 |阅读模式
我们称197为一个循环质数,因为它的所有轮转形式: 197, 971和719都是质数。
, ^. @& p0 G- L" @2 {100以下有13个这样的质数: 2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73, 79, 和97.1 e1 f  t6 ?7 L* ^
100万以下有多少个循环质数?
# S) v; i) u1 W: E6 e8 F能否更进一步,算出这些循环质数分别为多少?  n" d5 m! _$ G5 E
$ x4 {9 f, t8 l
: F' @4 j6 i0 O1 B6 k! Y
回复

使用道具 举报

发表于 2015-11-12 23:29:02 | 显示全部楼层
是需要所有轮转形式都为质数么?7 H! V9 b2 `. G+ R

2 }. \. B% h, I/ w也就是说判断一个质数是否为循环质数时,组成的数字里面不能有2、4、6、8、0?
' L, e/ O' l" o6 E2 x9 d4 ~

点评

大于1位数不能有5  发表于 2015-11-13 00:09

评分

参与人数 1威望 +1 收起 理由
冷水黄金 + 1 思想深刻,见多识广!

查看全部评分

 楼主| 发表于 2015-11-13 06:30:58 | 显示全部楼层
fwsc 发表于 2015-11-12 23:29
% g0 v% ^- z, M" x. W4 H5 s1 C是需要所有轮转形式都为质数么?
) S% J8 @; w2 Q4 g, Y7 e5 @6 T+ M' ]4 Y# b$ f# G/ [
也就是说判断一个质数是否为循环质数时,组成的数字里面不能有2、4、6、 ...
$ K: F0 r* R1 c+ r, w5 n. O
说的对,但是这个只是必要条件而已,按照它筛选出来的数还是非常多,事实上,符合条件的就几十个而已6 }8 Z( r+ w. [2 `2 J# L9 t2 A  L
发表于 2015-11-13 09:37:29 | 显示全部楼层
179,197,719,791,917,971, 不是6个这样的数么?你这个轮转的定义是什么?

点评

这个轮转的意思不是所有数的组合排列,而是有一定顺序的  发表于 2015-11-13 10:16
这个轮转的意思不是所有数的组合排列,而是有一定顺序的  发表于 2015-11-13 10:16
 楼主| 发表于 2015-11-13 10:14:48 | 显示全部楼层
阳光小院暖茶 发表于 2015-11-13 09:37
3 _0 i; h, ?  \2 J* N# }4 R179,197,719,791,917,971, 不是6个这样的数么?你这个轮转的定义是什么?
$ n. z2 V- j  V$ Y+ P6 r8 Q8 C7 r
主贴例子已经很清楚了,比如123这个数,它的轮转数是123,231,312,比如17的轮转数是17,71,5的轮转数就他本身一个
& ^- [. w, D( k9 B5 i; a: l4 Y  o+ ^0 e' h  f
发表于 2015-11-13 10:17:58 | 显示全部楼层
这样行不?假设要得出一百万以内的所有轮转形式为素数的素数,
' H0 [- L- _0 b- Y: |第一步,得到一张一百万以内的素数表;; R# N8 P  _6 k7 U
第二步,大于一位的素数,如果它含有0,2,4,6,8,5,就把它剔除,得到一张更精简的一百万以内的素数表;
! u4 ~! K4 q# v8 \4 B7 E: ]0 [% p第三步,逐一检查第二张素数表的素数,看它的所有轮转形式是否为素数
8 W2 Y. k! }+ ]哈哈,这个思路太简单了

点评

晚上我回去把你的思路做成程序,应该是可以秒出结果的  发表于 2015-11-13 12:51
晚上我回去把你的思路做成程序,应该是可以秒出结果的  发表于 2015-11-13 12:51
晚上我回去把你的思路做成程序,应该是可以秒出结果的  发表于 2015-11-13 12:50
这个思路完全可行,而且计算量也相当少,很不错,另外其实可以把所有数子加起来可以被3整除的也一起剔除,这样计算量会更少  发表于 2015-11-13 12:49
发表于 2015-11-13 13:19:59 | 显示全部楼层
你的这个剔除没必要,因为数字之和能被3整除的话,它就不会出现在第一张素数表中了。一百万以内的素数有78,498个(百度),轮转素数条件挺苛刻的,我猜不超过500个。但是具体怎么编程我不会,有难度,你要是做出来了的话,把结果贴出来欣赏欣赏哈。
 楼主| 发表于 2015-11-13 14:13:12 | 显示全部楼层
阳光小院暖茶 发表于 2015-11-13 13:19
- M( n5 |+ @. h5 o+ R8 e你的这个剔除没必要,因为数字之和能被3整除的话,它就不会出现在第一张素数表中了。一百万以内的素数有78, ...
0 I. l' u* t, ~, \  p
我早就做出来了,一共55个,代码今天回去分享给你+ i8 R- Z$ B8 n+ K9 P
 楼主| 发表于 2015-11-13 20:43:09 | 显示全部楼层
本帖最后由 pacelife 于 2015-11-13 20:57 编辑 : }( }; k3 E9 X
阳光小院暖茶 发表于 2015-11-13 13:19 ! F' _, E$ a: z/ u' ^; G
你的这个剔除没必要,因为数字之和能被3整除的话,它就不会出现在第一张素数表中了。一百万以内的素数有78, ...

/ b/ t+ L( e- V( U: _# V5 Z0 o% M我用两种方法算出来了,第一种是暴力计算法,费时5.39秒之多,另外一种就是你提出的多重筛选法,仅耗时0.078秒,可见适当的筛选对计算量的影响是巨大的
7 |( ]3 N8 c0 u' ^) g4 f 0 r. U$ T# v) K- ~+ F6 W  H
# h* @9 Q* i, E" ]0 M7 _3 P; [
8 ^; D  |  f" B) J' W7 I

! i! P) N; j3 J4 a

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
发表于 2015-11-16 14:16:09 | 显示全部楼层
你这个语言好像不是c语言吧?是什么语言啊?能编程判断一个整数是否为素数吗?一个很大的整数,如果人力判断它是不是素数,很难啊
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Archiver|手机版|小黑屋|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-7-20 23:07 , Processed in 0.087596 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表