이번 영상에서 갑자기 난이도가 올라가지고 한 세번 봤음요 -_-; 결국엔 저도성공함 n=int(input("range:")) primes=[] for i in range(1,n+1): result=[] for j in range (1,i+1): if i%j==0: result.append(j) if len(result)==1: primes.append(i) elif len(result)==2: primes.append(i) print(primes)
#범위 내의 소수 구하기 #a값을 입력 받아 1~a 사이 모든 소수값 구하기(a>0) a=int(input('a:')) li=[] b=0 for i in range(2,a+1): #2~a for j in range(1,i+1): if i%j==0: b=b+1 if b==2: li.append(i)
a=int(input('')) li=[] for n in range(2,a+1): check=True for i in range(2,n): if n%i==0: check=False if check: li.append(n) 에서의 check=True가 for안에 넣는게 바깥에 따로 check=True 넣는 것하고 무슨 차이인가요? 전자로 했을시(바깥에 check 변수를 둘 때) 10을 입력했을시 li=[2,3]나왔는데 후자로 하니 li=[2,3,5,7]로 나오는데 왜 이러는지 모르겠어요
지금 코드에는 for문이 중첩으로 2번이 사용되고 있어요~ 이거를 편하게 밖에 for문 (for n in range(2,a+1)), 안쪽 for문 (for i in range(2,n):) 으로 나눠서 부를게요! 밖의 for가 하는 일은 숫자를 2에서 a까지 만들어서 반복하면서 소수를 찾을 숫자의 범위를 만들고 안의 for가 하는 일은 2에서 n까지 반복하면서 이 중에서 약수가 나오는지 안나오는지 검사하는거죠~ 그런데 밖의 for문이 n을 만들때마다 check=True 이걸 안해주면 매번 새로운 숫자를 가지고 약수가 나오는지 안나오는지 안에 for가 검사를 해주는건데 이 check가 한번 False가 되고나서 다음 숫자를 검사할때 그대로 False이니까 그 다음부터는 검사가 제대로 안되는거에요. 그래서 check=True를 for문의 아예 밖에 넣었을 때는 2랑 3까지는 검사가 되는데 그 다음 4에서 False로 바뀌고 나서부터는 그 뒤로 검사가 제대로 안이루어지는것이죠. 이걸 글로 설명하려니 참 어렵네요. ㅎㅎ 이해가 되셨을지 모르겠어요~
아하 if check==True 라고 적어도 되지만 이렇게 해도 나오는 결과는 True죠~! 그래서 바로 check 변수를 조건에 넣어도 여기 들어있는게 True기 때문에 조건문이 바로 작동할 수 있는 것이죠~ ㅎㅎ 이해가 되시나요?? 혹시 헷갈린다면 다시 질문을 달아주세요. ㅎㅎ 감사합니다~
범위를 1~a 말고 더욱 다양하게 설정할 수 있도록 소스코드를 작성하였습니다. if에 만족하는 값이 전혀 없을때(범위내 소수가 없을 때) ‘범위 내에 소수는 존재하지 않는다’라고 단 한반 출력하고싶은데 어떻게 해야 하나요? if n%i != 0 이면 해당 소수 값들을 출력하도록 하고 else일때 소수가 존재하지 않는다고 출력하도록 하니, 라고 하면 해당 문자열이 여러번 출력되더라구요. 단 한번 출력되도록 소스코드를 마무리하고 싶습니다. 좋은 방법이 있을까요 ㅠ?
이번 강의도 잘 들었습니다.
감사합니다.
오늘도 감사합니다. 이번 주도 좋은 일만 가득하시길 바랍니다.
늘 감사드립니다
@@SONOL_FUN 제가 더 감사드립니다😁
오늘의 목표 30강 까지..
달려 봅니다. ~~~
감사히 잘 듣겠습니다. ^ ^
목소리가 강의듣기에 너무 나긋하고 듣기좋아욤 오늘도 조은강의 고맙슴니다 !!
칭찬 감사합니다~ ㅎㅎ 이때 영상들은 너무 긴장하고 찍어서 목소리가 어두운거 아닐까 걱정했는데 다행이에요~~
이번 영상에서 갑자기 난이도가 올라가지고 한 세번 봤음요 -_-;
결국엔 저도성공함
n=int(input("range:"))
primes=[]
for i in range(1,n+1):
result=[]
for j in range (1,i+1):
if i%j==0:
result.append(j)
if len(result)==1:
primes.append(i)
elif len(result)==2:
primes.append(i)
print(primes)
23강 잘들었습니다 선생님.
감사합니다 ^^
중첩 for문 너무 어렵네요...
소수 판별하기 범위를 2에서 n-1까지로 하였을때 ' NameError: name 'true' is not defined' 이런 메시지가 뜨네요
처음에 check 변수를 넣는 이유가 몰까요 선생님 ㅜㅜ
#범위 내의 소수 구하기
#a값을 입력 받아 1~a 사이 모든 소수값 구하기(a>0)
a=int(input('a:'))
li=[]
b=0
for i in range(2,a+1): #2~a
for j in range(1,i+1):
if i%j==0:
b=b+1
if b==2:
li.append(i)
print(li)
두번째 예제를 이렇게 짜봤는데 어디서 잘못된 것인지 모르겠습니다...
소수 구하는 식에서 range(2, n)을 적용했을 때, 숫자 1을 넣으면 True로 나옵니다. 이 부분을 수정하려면 어떻게 고치면 될까요~??? 오늘도 감사합니다~!
1이 소수이니까, true로 나오는 게 잘 된 거 아니에요? 1이니까, range에 들어갈 수가 없을테고, 그래서 true로 바로 반환이 되는 것 같은데요?
a=int(input(''))
li=[]
for n in range(2,a+1):
check=True
for i in range(2,n):
if n%i==0:
check=False
if check:
li.append(n)
에서의 check=True가 for안에 넣는게
바깥에 따로 check=True 넣는 것하고 무슨 차이인가요?
전자로 했을시(바깥에 check 변수를 둘 때)
10을 입력했을시 li=[2,3]나왔는데 후자로 하니 li=[2,3,5,7]로 나오는데 왜 이러는지 모르겠어요
지금 코드에는 for문이 중첩으로 2번이 사용되고 있어요~
이거를 편하게 밖에 for문 (for n in range(2,a+1)), 안쪽 for문 (for i in range(2,n):) 으로 나눠서 부를게요!
밖의 for가 하는 일은 숫자를 2에서 a까지 만들어서 반복하면서 소수를 찾을 숫자의 범위를 만들고
안의 for가 하는 일은 2에서 n까지 반복하면서 이 중에서 약수가 나오는지 안나오는지 검사하는거죠~
그런데 밖의 for문이 n을 만들때마다 check=True 이걸 안해주면
매번 새로운 숫자를 가지고 약수가 나오는지 안나오는지 안에 for가 검사를 해주는건데
이 check가 한번 False가 되고나서 다음 숫자를 검사할때 그대로 False이니까
그 다음부터는 검사가 제대로 안되는거에요.
그래서 check=True를 for문의 아예 밖에 넣었을 때는
2랑 3까지는 검사가 되는데 그 다음 4에서 False로 바뀌고 나서부터는 그 뒤로 검사가 제대로 안이루어지는것이죠.
이걸 글로 설명하려니 참 어렵네요. ㅎㅎ 이해가 되셨을지 모르겠어요~
안녕하세요! 밑에서 두번째 줄
if check=True:
가 아니라 왜 그냥 if check: 인지 알려주실 수 있나요??
아하 if check==True 라고 적어도 되지만 이렇게 해도 나오는 결과는 True죠~! 그래서 바로 check 변수를 조건에 넣어도 여기 들어있는게 True기 때문에 조건문이 바로 작동할 수 있는 것이죠~ ㅎㅎ 이해가 되시나요?? 혹시 헷갈린다면 다시 질문을 달아주세요. ㅎㅎ 감사합니다~
범위를 1~a 말고 더욱 다양하게 설정할 수 있도록 소스코드를 작성하였습니다.
if에 만족하는 값이 전혀 없을때(범위내 소수가 없을 때) ‘범위 내에 소수는 존재하지 않는다’라고 단 한반 출력하고싶은데 어떻게 해야 하나요?
if n%i != 0 이면 해당 소수 값들을 출력하도록 하고
else일때 소수가 존재하지 않는다고 출력하도록 하니,
라고 하면 해당 문자열이 여러번 출력되더라구요.
단 한번 출력되도록 소스코드를 마무리하고 싶습니다. 좋은 방법이 있을까요 ㅠ?
아하~ 음~ 그 알고리즘은 29강의 탐색하기 강의를 한번 보시겠어요~?? 댓글로 설명하기에는 꽤 길어서요~ ㅎㅎ 그 강의를 보고 탐색 방법을 적용하시면 금방 해결하실 수 있을거에요~
감사해요~
소수의 개수는 어떻게 구하나요??
범위 내의 소수구하기에서 check변수를 안쓰고 다른 방식으로 표현할 방법은 없나요?
변수를 안쓰면 알고리즘이 더 복잡해질거에요~ 방법이 없지는 않겠지만 어려울 것 같네요~ ㅎㅎ
무조건 에라토스테네스 체 익히삼
나정선운대 소놀코딩으로 4.3도전한다.
응원합니다
말로 설명하는 를
수학공식으로 전환한 다음 내용을 참조하시기 바랍니다.
ruclips.net/video/DESZ8GipugE/видео.html
(의 공식을 알고리즘 작성에도 물론 이용할 수 있습니다.)
네 감사합니다