24小时热门版块排行榜    

Znn3bq.jpeg
查看: 1349  |  回复: 8
本帖产生 1 个 程序强帖 ,点击这里进行查看

wangww2011

木虫 (著名写手)

[交流] Project Euler 46 欧拉工程 46 题 已有4人参与

德国数学家Christian Goldbach曾经提出一个猜想:
任何一个奇合数都能写成一个素数与一个平方数的二倍的和,如
9 = 7 + 2*1^2
15 = 7 + 2*2^2
21 = 3 + 2*3^2
25 = 7 + 2*3^2
27 = 19 + 2*2^2
33 = 31 + 2*1^2
但是后来证实这个猜想是错误的。
那么推翻这个猜想的最小的奇合数是多少?
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tieer

木虫 (正式写手)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
xzhdty: 欢迎讨论 2011-09-05 07:10:30
微尘、梦想(金币+2): 2011-09-07 11:57:14
初学python,菜鸟幼稚版,好像运行了3,4分钟,期待高手改进
答案,5777,不知道是否正确,呵呵
CODE:
# -*- coding: cp936 -*-
#欧拉工程 46 题
#任何一个奇合数都能写成一个素数与一个平方数的二倍的和,寻找破例
#n=prime+2*m**2
from math import sqrt
def isprime(p):    #验证是否素数,素数返回本身,合数返回False
    k=1
    for i in xrange(2,int(sqrt(p))+1):
        if p%i==0:
            k=0
            return False
            break
    if k:
        return p
n=35
while True:
    killer=1                   #设置猜想的判断参数
    if not isprime(n):         #验证是否素数,素数则n递增继续下一循环,合数进行下一步验证
        for m in xrange(1,int(sqrt((n-2)/2)+1)):
            for i in xrange(1,n-1):
                if isprime(i) and n==i+2*m**2:
                    killer=0   #符合猜想
                    break
            if not killer:     #符合猜想
                break
    else:
        n+=2
        continue
    if killer:                 #验证完毕,不符合猜想,即为结果
        print('the number is:%d')%n
        break
    else:
        n+=2

[ Last edited by tieer on 2011-9-5 at 00:01 ]
思考,让这个世界更有趣。
2楼2011-09-04 23:56:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

asaka

银虫 (初入文坛)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
微尘、梦想(金币+2): 2011-09-07 11:57:24
我的python版本
CODE:
from math import sqrt
primes = []
n = 3
while True :
  isp = True
  for j in primes :
    if j**2 > n : break
    if n%j == 0 :
      isp = False
      break
  if isp :
    primes.append(n)
  else :
    isf = True
    for j in reversed(primes) :
      it = (n-j)/2
      if it == int(sqrt(it))**2 :
        isf = False
        break
    if isf : break
  n = n + 2
print "The number is",n

运行结果
The number is 5777
real    0m0.038s

[ Last edited by asaka on 2011-9-5 at 04:37 ]
3楼2011-09-05 03:26:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

asaka

银虫 (初入文坛)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
xzhdty(金币+2): 欢迎常来 2011-09-05 07:10:04
另附:眼花缭乱之---FORTRAN goto 版
CODE:
      integer p(800)
      j=0;n=1
   1  n=n+2
      do 2 i=1,j
        if(p(i)**2.gt.n) goto 3
   2    if(mod(n,p(i)).eq.0) goto 4
   3  j=j+1
      p(j)=n;goto 1
   4  do 5 i=j,1,-1
        k=(n-p(i))/2
   5    if(k.eq.int(sqrt(float(k)))**2) goto 1
      write(6,*) "The number is ",n
      End

运行结果:
The number is         5777
real    0m0.003s
4楼2011-09-05 04:10:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

asaka

银虫 (初入文坛)


小木虫(金币+0.5):给个红包,谢谢回帖
xzhdty: 欢迎讨论 2011-09-05 07:09:50
我能算出来第一个是5777,第二个是5993,不知道第三个是多少?
5楼2011-09-05 05:41:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tieer

木虫 (正式写手)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
xzhdty(金币+2): 欢迎讨论 2011-09-06 12:57:24
微尘、梦想(程序强帖+1): 追加~ 2011-09-07 11:58:31
呵呵,优化一下,快多了,3.09s
CODE:
# -*- coding: cp936 -*-
#欧拉工程 46 题
#任何一个奇合数都能写成一个素数与一个平方数的二倍的和,寻找破例
#n=prime+2*m**2
from math import sqrt
def isprime(p):    #验证是否素数,素数返回本身,合数返回False
    k=1
    for i in xrange(2,int(sqrt(p))+1):
        if p%i==0:
            k=0
            return False
            break
    if k:
        return p
n=35
while True:
    killer=1                   #设置猜想的判断参数
    if not isprime(n):         #验证是否素数,素数则n递增继续下一循环,合数进行下一步验证
        for i in xrange(3,n-1):#最小的素数应为3,若为2,则无法形成奇合数
            if isprime(i) and (sqrt((n-i)/2))%1==0:#浮点数取余,呵呵,还是python方便
                killer=0   #符合猜想
                break
    else:
        n+=2
        continue
    if killer:                 #验证完毕,不符合猜想,即为结果
        print('the number is:%d')%n
        break
    else:
        n+=2

思考,让这个世界更有趣。
6楼2011-09-05 12:02:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangww2011

木虫 (著名写手)

★ ★
ben_ladeng: 2011-09-05 20:57:16
xzhdty(金币+2): 欢迎常来讨论 2011-09-06 12:57:05
另外一种思路,
CODE:
from math import sqrt
n=10000
primes=[2,3]
oddcomp=[]
for i in range(5,n,2):
    isprime=True
    for j in primes:
        if j*j>=i: break
        if i%j==0:
            isprime=False
            break
    if isprime:
        primes.append(i)
    else:
        oddcomp.append(i)
   
res=[p+2*j*j for p in primes for j in range(1,int(sqrt(n))+1)]
print set(oddcomp)-(set(res)|set(primes))

结果为
CODE:
set([5777, 5993])

PS 不会只有这两个数吧?

[ Last edited by wangww2011 on 2011-9-5 at 12:36 ]
7楼2011-09-05 12:28:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
微尘、梦想(金币+1): 鼓励讨论~ 2011-09-07 11:59:05
我又看到了一个挺困难的数论算法问题:

“如何快速判断一个整数是否为完全平方数”

这应该是本题最精华的地方...
8楼2011-09-05 15:10:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huycwork

金虫 (著名写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
微尘、梦想(金币+1): 鼓励讨论~ 2011-09-07 11:59:24
引用回帖:
8楼: Originally posted by sudo at 2011-09-05 15:10:50:
我又看到了一个挺困难的数论算法问题:

“如何快速判断一个整数是否为完全平方数”

这应该是本题最精华的地方...

要这么弄就麻烦鸟~~~~
那素数也要用个那啥算法,叫费马小定理的判断一下了~
漩涡的中心有一块空地,空空的。
9楼2011-09-05 15:30:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wangww2011 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿哈工大 085600 277 12材科基求调剂 5+3 chenny174 2026-04-10 17/850 2026-04-11 00:26 by 骑牛渡寒江
[考研] 263能源动力专硕求调剂 +4 加大号饭盒袋 2026-04-10 4/200 2026-04-10 20:52 by gong120082
[考研] 本科西工大 324求调剂 +4 wysyjs25 2026-04-10 4/200 2026-04-10 20:00 by 来看流星雨10
[硕博家园] 0856材料化工求调剂,一志愿211,初试成绩349 +5 江淮北月 2026-04-05 5/250 2026-04-10 16:26 by 高维春
[考研] 282,求调剂 +10 jggshjkkm 2026-04-09 12/600 2026-04-10 14:53 by 逆水乘风
[考研] +6 化工专硕323分 2026-04-04 6/300 2026-04-10 10:04 by may_新宇
[考研] 085600材料与化工301分求调剂院校 +33 刺痛jk 2026-04-06 34/1700 2026-04-09 18:31 by hy861222
[考研] 296求调剂 +5 汪!?! 2026-04-09 5/250 2026-04-09 17:47 by 柠檬不酸zy
[考研] 材料专硕322 +14 哈哈哈吼吼吼哈 2026-04-05 14/700 2026-04-09 13:25 by 5268321
[考研] 266调剂 +8 daya sun 2026-04-07 9/450 2026-04-08 20:27 by yutian743
[考研] 327求调剂 +12 Xxjc1107. 2026-04-06 12/600 2026-04-08 16:46 by luoyongfeng
[考研] 336求调剂,一志愿中科大 +9 墨彧 yuyu 2026-04-06 9/450 2026-04-08 11:24 by 想读书的菌菌
[考研] 307求调剂 +14 超级伊昂大王 2026-04-06 14/700 2026-04-08 07:03 by 无际的草原
[考研] 085404 293求调剂 +8 勇远库爱314 2026-04-06 9/450 2026-04-07 13:05 by flydream1314
[考研] 调剂 +4 mcbbc 2026-04-06 5/250 2026-04-07 12:33 by upczlm1989
[考研] 一志愿华中农业大学0710(A)初试329分 求调剂 +5 一名26考研生 2026-04-04 5/250 2026-04-07 08:54 by 18828373951
[考研] 求调剂到材料 +5 程9915 2026-04-06 5/250 2026-04-06 15:21 by yulian1987
[考研] 工科370求调剂 +3 溏心煎鸡蛋 2026-04-05 3/150 2026-04-06 10:55 by 这是一个无聊的
[考研] 求调剂 +7 张.1 2026-04-05 7/350 2026-04-05 20:40 by 啵啵啵0119
[考研] 可跨专业调剂 +3 周的得地 2026-04-04 6/300 2026-04-04 22:21 by barlinike
信息提示
请填处理意见