レス書き込み
スレへ戻る
写
レス栞
レス消
プログラミングのお題スレ Part13
PC,スマホ,PHSは
ULA
べっかんこ
公式(スマホ)
公式(PC)
で書き込んでください。
名前
メール
引用切替:
レスアンカーのみ
>>42 > >>35 結局 整数のsqrt を作って、範囲の中に納まる最小最大の整数のsqrt を取り出し、その差(+1)がその範囲の中にある平方数の個数と言う作りにした。 > ポイントとなった整数のsqrt が秀逸だったのでここに書いておく。 どんなに巨大な数字でも数回のシフト操作だけで終わるから極端にスピードが速い。 > ソースは、gist.github.com/bnlucas/5879594 > > # integer square root > def isqrt_2(n): > if n < 0: > raise ValueError('Square root is not defined for negative numbers.') > x = int(n) > if x == 0: > return 0 > a, b = divmod(x.bit_length(), 2) > #divmod(a, b)は(a // b, a % b)のタプルを返す。 > #平方数は半分のビット数以下だからそれを最大値で計算開始 > n = 2 ** (a + b) > while True: > y = (n + x // n) >> 1 #1bit右にシフト > if y >= n: > return n > n = y > > ----------------- > #結果 0.0 秒 count= 1000000000 > #範囲 999999999000000000000000000000000000 1000000001000000000000000000000000000 > #入力bit_length()=120 入力bit_length()=120 > 平方数範囲 999999999500000000 1000000000499999999 > 上の二乗 999999999000000000250000000000000000 1000000000999999998249999999000000001
ローカルルール
SETTING.TXT
他の携帯ブラウザのレス書き込みフォームはこちら。
書き込み設定
で書き込みサイトの設定ができます。
・
ULA
・
べっかんこ(身代わりの術)
・
べっかんこ(通常)
・
公式(スマホ)
・
公式(PC)[PC,スマホ,PHS可]
書き込み設定(板別)
で板別の名前とメールを設定できます。
メモ帳
(0/65535文字)
上
下
板
覧
索
設
栞
歴
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.016s