질문 3 - 600851475143의 최대 화질 계수
2053 단어 문제.
"13195의 질인수(또는 소인자, 소요소)는 5, 7, 13과 29로 600851475143의 최대 질인수는 얼마입니까?"
여기서 질인수의 개념은 군말하지 않는다.
코드는 다음과 같습니다.
private static Long getTheLargestPrimeFactor(Long n) {
Long returnFactor = 1L;
for (Long factor = 2L; n > 1; factor++) {
if (n % factor == 0) {
n /= factor;
returnFactor = factor;
while (n % factor == 0) {
n /= factor;
}
}
}
return returnFactor;
}
답이 나올 수 있습니다. 6857.
판단의 조건은 변화가 있을 수 있는지의 여부를 알 수 있다. 우리는 한 수의 질인수가 한 수의 제곱근보다 크면 안 된다는 것을 알고 한 수를 n으로 설정하고 그 어떠한 질인수primefactor<=n의 제곱근도 설정한다.
그러면 다음과 같이 판단 조건을 수정할 수 있습니다.
private static Long getTheLargestPrimeFactor1(Long n) {
Long returnFactor = 1L;
Double LargestFactor = Math.sqrt(n);
for (Long factor = 2L; factor <= LargestFactor; factor++) {
if (n % factor == 0) {
n /= factor;
returnFactor = factor;
while (n % factor == 0) {
n /= factor;
}
}
}
return returnFactor;
}
또 다른 점이 개선되지 않았을까?
우리는 2가 모든 질인수 중 유일한 짝수라는 것을 감안하여 이 방면에 공을 들여 아무 말도 하지 않고 코드를 붙일 수 있다.
private static Long getTheLargestPrimeFactor2(Long n) {
Long returnFactor = 1L;
Long factor = 2L;
Double LargestFactor = Math.sqrt(n);
if (n % factor == 0) {
n = n / factor;
returnFactor = factor;
while (n % factor == 0) {
n /= factor;
}
} else {
factor = 3L;
}
for (; factor <= LargestFactor; factor += 2) {
if (n % factor == 0) {
n /= factor;
returnFactor = factor;
while (n % factor == 0) {
n /= factor;
}
}
}
return returnFactor;
}
이만 마치겠습니다. 아낌없이 가르침을 주십시오.
@anthor ClumsyBirdZ
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
곤혹스러울 때 사용하는 문제 형식의 소개포기할 수 있다면 그것도 방법이지만 일이라면 그렇게 하지 않을 거예요. 모르는 것을 묻기 위해 지식이 있는 사람에게 질문하겠죠. 처음부터 무언가에 대해 알려주면 심리적 모형을 만들어 줄 수 있다. 물어보고 싶은 것을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.