• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

풀이가 잘못된 것 같습니다...

21.09.22 18:14 작성 조회수 191

2

쓰이지 않은 소수같은 경우에도 소수이지만 쓰이지 않았으니 0으로 출력되어야하지 않나요 ?

저렇게 코드를 짜면 825를 표현하는 ( 0 1 2 0 1) 같은 경우에는 2와 7이 쓰이지 않아서 0임에도 불구하고 출력되지 않고 1 2 1로 출력되어서 2가 한 번, 3이 두 번, 5가 한 번 쓰였다고 출력되는 것과 같지 않나요.

마지막에 23 번째 줄부터 시작되는 출력문에서

if(ch[i]!=0) 문 말고 for 문 하나 더 만들어 i 가 소수인지 판별하는 식을 세우고, i가 소수면 i를 index로 가지는 배열값을 출력시킨다는 조건을 추가하면 소수인 배열값 0 도 출력시킬 수 있을 것 같습니다.

답변 2

·

답변을 작성해보세요.

1

RON님의 프로필

RON

2021.10.27

825는 팩토리얼이 아니여서 소수가 0인 경우가 나올수 있는데, 팩토리얼에서는 N까지의 수가 모두 곱해지는 것이므로 N이하의 소수는 자기자신을 무조건 1이상 가지고 있기때문에 0이 나올수가 없다고 생각합니다. 그래서 0일때의 경우의 수는 소수가 아닌 경우만 있기 때문이라서 0은 출력을 안한 것 같습니다.

계승(factorial, !)의 소인수분해! : 네이버 블로그 (naver.com)

저는 강사님 풀이방법이 아니라 해당 블로그 공식으로 map이랑 vector를 이용해서 다르게 풀었는데 답이 같게 나오네요.

그래서 0이 출력이 안되어도 상관이 없다고 생각합니다. 하지만 예시가 왜 825인지는 모르겠습니다..

0

강지훈님의 프로필

강지훈

2021.09.23

제가 잘 이해가 안되서 그런데

5! = 120 이고 6!= 720 인데 어떻게 !로 825를 나타낼수있나요..?

kh701201님의 프로필

kh701201

질문자

2021.09.23

저기서 나온 825는 팩토리얼과는 별개로 어떤 소수를 몇 번 곱했는지에 대한 표현법을 설명하기 위한 임의의 수인 것 같습니다. 어떤 수를 팩토리얼을 해야 825가 나와야하는지 구할 필요는 없는 것 같아요.