숫자를이 숫자와 다른 숫자에서 가장 큰 사각형의 곱으로 분해하고 싶지만 어느 시점에서 멈추었습니다. 나는 정말로 약간의 제안에 감사 할 것이다. 이것은 지금까지 내가 한 것입니다 :숫자에서 가장 큰 사각형 찾기 (Java)
나는 입력에 숫자를 취하고, 소수로 분해하고, 소수의 시퀀스를 ArrayList에 넣습니다. 숫자는 어떤 의미에서 정렬되므로 시퀀스의 숫자가 증가합니다. 예를 들어
,
996 is 2 2 3 83
1000 is 2 2 2 5 5 5
100000 is 2 2 2 2 2 5 5 5 5 5
내 생각은 이제 시퀀스의 각 요소의 발생 수를 계산하는 것입니다, 그래서 발생 수가 2로 나누어 경우,이 광장이다.
이렇게하면 두 번째로 나눌 수있는 가장 큰 요소가 가장 큰 사각형 인 다른 시퀀스를 얻을 수 있습니다.
ArrayList
의 발생을 계산하는 가장 효율적인 방법은 무엇입니까? 또는 가장 큰 광장을 찾는 더 좋은 방법이 있습니까?
내 생각에 가장 큰 사각형 논리가 꺼져있을 수도 있습니다 (올바르게 이해하면). 1000의 가장 큰 제수는 100입니다. 결과적으로 알고리즘이 제공하는 것입니까? – dkarp
숫자는 얼마나 큰가? – MAK
dkarp, 예, 맞습니다. 전략을 재고해야합니다. 고마워요! MAK, 음, 크기가 클 수도 있습니다. BigIntegers를 사용하고 있습니다. –