全然分からなかったですね。。。
これで行けるかなと思ったんですが。
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)