0
0

素数の個数

Posted at

全然分からなかったですね。。。
これで行けるかなと思ったんですが。

N = int(input())
cnt = 1 #2も素数のため
for i in range(3,N+1):
    for j in range(2,10):
        if i % j == 0:
            continue
    else:
        cnt += 1

print(cnt)

とりあえず素数って
1とその数以外割り切れない数ってやつですよね。

とりあえず2以上なのは間違いないでしょう。
条件にも入ってますし。

とりあえず10まで考えてみます。

2 = 1, 2 と2つしかないので素数。
3 = 1, 3 と2つしかないので素数。
4 = 2で割り切れちゃうので素数ではない。
5 = 1, 5 と2つしかないので素数。
6 = 1, 2, 3, 6と 2も3も割り切れるので素数ではない。
7 = 1, 7と、2つしかないので素数。
8 = 1, 2, 4, 8 と2と4で割り切れてしまうので素数ではない。
9 = 1, 3, 9 と3で割り切れてしまうので素数ではない。
10 = 1, 2, 5, 10 と2と5で割り切れてしまうので素数ではない。

パターンを見ると、どうも、半分にできるものは約数と考えて良さそうです。
逆に、半分以上だと絶対に正解は出ない感じです。
たしかにそうだわ。
ちなみに乗の出し方は**xだった。0.5乗はそのままだけど、数字型である必要があるので
intで小数点以下切り捨て。
ルートって忘れてたけど、0.5乗だったな。

ロジックを理解したところで本題

N = int(input())
cnt = 0
for i in range(2,N+1):
    flag = True
    for j in range(2,int(i ** 0.5) + 1):
        # 余り0なら約数
        if i % j == 0:
            flag = False
            break
    if flag:
        cnt += 1

print(cnt)

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0