메모리 초과문제 발생
total=[]
for i in range(2, b+1):
if field[i]==True:
n=2
value=0
while value<=b:
value = i**n
if value not in total and value<=b:
n+=1
total.append(value)
else:
break
print(len(total))
- 중복이 일어날것이라 생각해고 total 배열을 만들었음(X)
-> 중복이 일어나지 않음(몇개 예시로 써보면 감옴...)- 따라서 그냥 count만 하면됨
count=0
for i in range(2, b+1):
if field[i]==True:
value= i*i
while value<=b:
if value >= a:
count+=1
value *=i
파이썬은 int형의 오버플로우가 나지 않는다.. 그러나 다른 언어는 내가 자료형을 직접 정해서 선언해야함 이때 N제곱한 것이 int의 범위를 초과한다면...?
오버플로우가 날것이다 아마도...
어떻게 해결해야 할까?
total=0
for i in range(2, len(field)):
if field[i]==True:
temp = i
while i<= b/temp:
if i >= a/temp:
total+=1
temp = temp*i
범위의 양쪽을 나눠준다....
ex> a<x<b에서 x의 2의 범위를 원하면 a와 b에 x를 나누어 주어서 이 범위에 맞는지 확인하는 것...
x의 3의 범위는 a/x < x< b/x에서 또다시 a/x/x < x < b/x/x가 만족하는지 확인하고 이런식...