可逆素数函数Python 可逆素数对

用python编写求5为整数中所有可逆素数

这个竟然没有人回答。。我来写一个,如果有bug还请大神指出 = =:

网站设计制作过程拒绝使用模板建站;使用PHP+MYSQL原生开发可交付网站源代码;符合网站优化排名的后台管理系统;成都网站设计、网站制作收费合理;免费进行网站备案等企业网站建设一条龙服务.我们是一家持续稳定运营了十载的成都创新互联公司网站建设公司。

import math

def isPrime(num):

# 如果被2到根号num之间的数整除则不是素数

maxDiv = int(math.sqrt(num))

for d in range(2, maxDiv+1):

if num % d == 0:

return False

return True

def isPalindrome(num):

# 转成字符串判断是不是回文,效率较低。

# 但按照数字来判断的话,代码可能比这个难读。

s = str(num)

i = 0; j = len(s) - 1

while i  j:

if s[i] != s[j]:

return False

i += 1; j -= 1

return True

def main():

for num in range(10000, 100000):

if isPrime(num) and isPalindrome(num):

print num

main()

输出如下:

10301

10501

10601

11311

11411

12421

12721

12821

13331

13831

13931

14341

14741

15451

15551

16061

16361

16561

16661

17471

17971

18181

18481

19391

19891

19991

30103

30203

30403

30703

30803

31013

31513

32323

32423

33533

34543

34843

35053

35153

35353

35753

36263

36563

37273

37573

38083

38183

38783

39293

70207

70507

70607

71317

71917

72227

72727

73037

73237

73637

74047

74747

75557

76367

76667

77377

77477

77977

78487

78787

78887

79397

79697

79997

90709

91019

93139

93239

93739

94049

94349

94649

94849

94949

95959

96269

96469

96769

97379

97579

97879

98389

98689

在网上找到一个效率更高的方法,直接生成5位回文数,然后遍历回文数判断它是不是素数就好了,这样减少了很多数字的遍历:

import math

def isPrime(num):

# 如果被2到根号num之间的数整除则不是素数

maxDiv = int(math.sqrt(num))

for d in range(2, maxDiv+1):

if num % d == 0:

return False

return True

def palindromeList():

for d1 in range(1, 10):

for d2 in range(0, 10):

for d3 in range(0, 10):

yield(d1*10000 + d2*1000 + d3*100 + d2*10 + d1)

def main():

for num in palindromeList():

if isPrime(num):

print num

main()

求四位的可逆素数。可逆素数指:一个素数将其各位数字的顺序倒过来构成的反序数也是素

四位的可逆素数共204个,如下:

1009 1021 1031 1033 1061 1069 1091 1097 1103 1109 1151 1153 1181 1193 1201 1213 1217 1223 1229 1231 1237 1249 1259 1279 1283 1301 1321 1381 1399 1409 1429 1439 1453 1471 1487 1499 1511 1523 1559 1583 1597 1601 1619 1657 1669 1723 1733 1741 1753 1789 1811 1831 1847 1867 1879 1901 1913 1933 1949 1979 3011 3019 3023 3049 3067 3083 3089 3109 3121 3163 3169 3191 3203 3221 3251 3257 3271 3299 3301 3319 3343 3347 3359 3371 3373 3389 3391 3407 3433 3463 3467 3469 3511 3527 3541 3571 3583 3613 3643 3697 3719 3733 3767 3803 3821 3851 3853 3889 3911 3917 3929 7027 7043 7057 7121 7177 7187 7193 7207 7219 7229 7253 7297 7321 7349 7433 7457 7459 7481 7507 7523 7529 7547 7561 7577 7589 7603 7643 7649 7673 7681 7687 7699 7717 7757 7817 7841 7867 7879 7901 7927 7949 7951 7963 9001 9011 9013 9029 9041 9103 9127 9133 9161 9173 9209 9221 9227 9241 9257 9293 9341 9349 9403 9421 9437 9439 9467 9479 9491 9497 9521 9533 9547 9551 9601 9613 9643 9661 9679 9721 9749 9769 9781 9787 9791 9803 9833 9857 9871 9883 9923 9931 9941 9967

用c语言编写一个判断某数是否为可逆素数的函数。

#includestdio.h

// 可逆素数就是该数及其反数均为素数

int IsPrime(int i);

int GetFanShu(int n);

int main(int argc, char *argv[])

{

int m, n;

do

{

printf("请输入一个自然数:");

scanf("%d", m);

}while(m2);

n = GetFanShu(m);

if( IsPrime(m) IsPrime(n) )

printf("数字%d为可逆素数!\n", m);

else

printf("数字%d不是可逆素数!\n", m);

return 0;

}

int IsPrime(int iNum)

{

int k;

for(k=2; kiNum/2; k++)

{

if( iNum%k==0 )

return 0;

}

//printf("数字%d为素数!\n", iNum);

return 1;

}

int GetFanShu(int iNum)

{

int i=0, tmp=iNum;

while(iNum0)

{

i = i*10 + iNum%10;

iNum = iNum/10;

}

//printf("自然数%d的反序数为:%d\n", tmp, i);

return i;

}

python编写一个函数.判断一个数是不是素数,然后调用该函数输出100以内的素数

1、打开pycharm,点击file,点击new,新建一个空白的pyrthon文件:

2、这里开始编写判断素数的代码,判断素数的上限最准确的应该使用平方根取整加一,此处用到两层循环,第一层遍历0到100的数,第二层循环判断满足条件的素数。这里有一个else要注意是和for对齐而不是if对齐,如果和if对齐只要不能被2整除就会被添加到列表中了,而且会多次添加:

3、右键点击鼠标,点击“run demo”,运行编写好的python文件,在下方的控制台就可以看见输出后结果:


文章标题:可逆素数函数Python 可逆素数对
浏览路径:http://ybzwz.com/article/doooodj.html