結果
| 問題 |
No.843 Triple Primes
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-06-28 22:36:22 |
| 言語 | Lua (LuaJit 2.1.1734355927) |
| 結果 |
AC
|
| 実行時間 | 22 ms / 2,000 ms |
| コード長 | 1,013 bytes |
| コンパイル時間 | 157 ms |
| コンパイル使用メモリ | 5,376 KB |
| 実行使用メモリ | 7,296 KB |
| 最終ジャッジ日時 | 2024-09-19 14:07:58 |
| 合計ジャッジ時間 | 1,659 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 42 |
ソースコード
local mfl = math.floor
local function getprimes(x)
local primes = {}
local allnums = {}
for i = 1, x do allnums[i] = true end
for i = 2, x do
if(allnums[i]) then
table.insert(primes, i)
local lim = mfl(x / i)
for j = 2, lim do
allnums[j * i] = false
end
end
end
return primes
end
local function lb_sq(ary, x)
local num = #ary
if num == 0 then return 1 end
if(x <= ary[1] * ary[1]) then return 1 end
if(ary[num] * ary[num] < x) then return num + 1 end
local min, max = 1, num
while(1 < max - min) do
local mid = mfl((min + max) / 2)
if(ary[mid] * ary[mid] < x) then
min = mid
else
max = mid
end
end
return max
end
local n = io.read("*n")
if n == 1 then print(0)
else
local cnt = 1
local primes = getprimes(n)
for i = 2, #primes do
local rsq = 2 + primes[i]
local cand = lb_sq(primes, rsq)
if cand <= n and primes[cand] * primes[cand] == rsq then
cnt = cnt + 2
end
end
print(cnt)
end