zoukankan      html  css  js  c++  java
  • Google Treasure Hunt 2008Find the Smallest Prime Number

    Question:
    Find the smallest number that can be expressed as
    the sum of 3 consecutive prime numbers,
    the sum of 11 consecutive prime numbers,
    the sum of 25 consecutive prime numbers,
    the sum of 171 consecutive prime numbers,
    the sum of 1225 consecutive prime numbers,
    and is itself a prime number.


    For example, 41 is the smallest prime number that can be expressed as
    the sum of 3 consecutive primes (11 + 13 + 17 = 41) and
    the sum of 6 consecutive primes (2 + 3 + 5 + 7 + 11 + 13 = 41).

    Your answer:

    My solution with VB6

    1. Dim a(100000000) As Byte, p(10000000) As Long, num As Long, n As Long
    2. Sub Getprimes()
    3.     Dim i&, j&, k
    4.     p(0) = 2    'The 1st prime
    5.     k = 10000    'sqrare root of 10^8
    6.     n = 100000000    '10^8
    7.     For i = 3 To k Step 2
    8.         If a(i) = 0 Then
    9.             num = num + 1
    10.             p(num) = i
    11.             For j = i * i To n Step 2 * i    'Eractosthenes
    12.                 a(j) = 100    'Not prime number
    13.             Next
    14.         End If
    15.     Next
    16.     For i = k + 1 To n Step 2    'List all prime numbers to array p()
    17.         If a(i) = 0 Then
    18.             num = num + 1
    19.             p(num) = i
    20.         End If
    21.     Next
    22. End Sub
    23. Private Sub Command1_Click()
    24.     Dim s As String, tm As Single
    25.     s = InputBox("Please enter numbers:""Info""3,11,25,171,1225")    'Input all numbers the question has listed
    26.     tm = Timer
    27.     Getprimes
    28.     s = minprime(s)
    29.     tm = Timer - tm
    30.     Clipboard.Clear
    31.     Clipboard.SetText CStr(s)    'Copy the answer to Clipboard
    32.     MsgBox "It cost me about " & Format(tm, "0.0000") & " seconds to find the answer: " & s & vbCrLf & "And it has been copied to the clipboard"
    33. End Sub
    34. Function minprime(myprimes As StringAs Long
    35.     Dim i&, j&, sum() As Long, count As Long, primedata
    36.     primedata = Split(myprimes, ",")
    37.     count = UBound(primedata)
    38.     ReDim sum(count)
    39.     For i = 0 To count
    40.         For j = 1 To primedata(i)    'Small sum of continuous prime numbers
    41.             sum(i) = sum(i) + p(j)
    42.         Next
    43.         If a(sum(i)) < 100 Then a(sum(i)) = a(sum(i)) + 1    'Meet one of the conditions
    44.         For j = primedata(i) + 1 To num
    45.             sum(i) = sum(i) + p(j) - p(j - primedata(i))
    46.             If sum(i) > n Then Exit For
    47.             If a(sum(i)) < 100 Then a(sum(i)) = a(sum(i)) + 1    'Meet one of the conditions
    48.             If a(sum(i)) = count + 1 Then minprime = sum(i): Exit Function    'Meet all of the conditions,Ok
    49.         Next
    50.     Next
    51. End Function

    It returns:

     

    6954293

  • 相关阅读:
    Cocoa中对日期和时间的处理 NSDate
    Fragment(一)--Fragment用法常见问题
    Volley源码解析(三) 有缓存机制的情况走缓存请求的源码分析
    # Volley源码解析(二) 没有缓存的情况下直接走网络请求源码分析#
    Android笔记--Bitmap(三) 针对不用Android版本的位图管理
    Java 语言中一个字符占几个字节?
    编码格式
    Volley解析(一)--Volley的使用
    Android笔记--Bitmap(二)内存管理
    Android笔记--Bitmap
  • 原文地址:https://www.cnblogs.com/fengju/p/6336230.html
Copyright © 2011-2022 走看看