내가 10^18의 순서입니다 숫자의 모든 요소를 찾기 위해 노력하고 있어요 ...하지만 문제를 만드는 시간 제약이 있습니다. 내가 한 일은 에라 토 스테 네스 시브 (Sieve of Eratosthenes)를 사용하여 요소를 찾고 요소를 저장하는 것이지만 속도는 느립니다 .......C에서 큰 숫자의 모든 요소/C++
답변
난 정말이 정수 인수 분해에 위키 기사를 읽고 추천 할 것입니다 : http://en.wikipedia.org/wiki/Integer_factorization
일반 목적의 인수 분해 방법이 느리다. 그러나 일부 특수 목적 방법을 사용하려고 할 수 있습니다.
팩터 번호 N < = 10^18에 소수 p < = 10^9의리스트를 저장하는 문제는 임의의 특정 N에 대해 여전히 소수를 반복해야한다는 것입니다. < = sqrt N), N % p == 0인지 확인하십시오. 이것은 비즈니스를 수행하는 가장 빠른 방법이 아닙니다.
주문 번호가 10^18 인 숫자의 묶음을 고려하고 싶거나 모두를 숫자 N < = 10^18으로 계산하려면 원하는지 확실하지 않습니다. 첫 번째 경우는 고려해야 할 N의 수와 얼마나 빨리해야하는지에 따라 다릅니다. 그 이상 동작 10^18 (고려되는 각각의 번호에 대한 적어도 하나)을 수반하기 때문에 모든 < 번호 N = 10^18을 고려해 두 번째 경우는, 행할 수 없다. 컴퓨터가 초당 10^9 작업의 순서로 수행 할 수 있고 그 해에 10^7 초 정도의 시간이 걸린다는 것을 고려하면 오랫동안 고려할 것입니다. 방금^18 (10)의 순서에 번호 N의 무리를 고려하려면
, 다음이 작업을 수행하는 많은 방법이있다. "가장 좋은"방법은 특정 숫자의 속성에 따라 다릅니다. 작은 요소보다 정교한 알고리즘으로 이동하기 전에 시험 구분하여 제거 할 수 있기 때문에, 예를 들어,^18 (10) 주위의 임의의 정수 개의 소수 위해 10^(9)의 각각의 산물 정수보다 평균 인자 훨씬 쉽다. 이것은 프로그래밍 문제보다 더 많은 계산 이론 이론 문제입니다. 이것이 귀하의 질문 인 경우 Factoring section of mersenneforum.org으로 문의하는 것이 좋습니다. 그런 다음 바퀴를 재발견하지 않는 터무니없이 느린없는 신속하고 더러운 솔루션을 원하는 경우
. 예를 들어 GMP-ECM을 시도하거나 PARI/GP가 문제를 해결할 수 있는지 확인하십시오. 실제로
- 1. C에서 숫자의 이진 표현
- 2. 큰 숫자의 부분
- 3. 매우 큰 숫자의 vb.net
- 4. 큰 숫자의 곱
- 5. C에서 숫자의 모듈을 찾는 방법 #
- 6. ArrayIndexOutOfBoundsException 큰 숫자의 프로그램 추가
- 7. 모든 숫자의 합
- 8. (a/b) 큰 숫자의 경우 mod n입니까?
- 9. 큰 숫자의 JSON.Stringify()가 숫자 값을 변경합니까?
- 10. 큰 숫자의 마지막 13 자리 가져 오기
- 11. C에서 큰 nPr을 계산하는 방법?
- 12. 이상한 숫자의 모든 숫자 확인
- 13. 큰 숫자의 숫자 분리 (iOS-Xcode)
- 14. CUDA로 숫자의 큰 배열을 정렬해야하므로 추력
- 15. X보다 큰 숫자의 PDF를 검색하는 방법
- 16. 큰 숫자의 경우 Python에서 10 진수로
- 17. 매트릭스에서 인접한 숫자의 가장 큰 영역 찾기
- 18. C에서 큰 텍스트 처리 #
- 19. 숫자의 모든 제수를 효율적으로 찾는 것
- 20. C# 알고리즘 - 숫자의 모든 순열을 나열합니다.
- 21. 주어진 숫자의 모든 순열을 생성 하시겠습니까?
- 22. 숫자의 모든 배수를 빠르게 얻는 방법은 무엇입니까?
- 23. 데이터베이스 테이블의 모든 개별 숫자의 총 합계
- 24. 30보다 작은 숫자의 합계와 30보다 큰 숫자의 합을 선택하는 방법은 무엇입니까?
- 25. X까지 합쳐진 주어진 숫자의 조합
- 26. 더 큰 숫자의 복권 번호를 효율적으로 생성하는 방법
- 27. 숫자의 가장 큰 배수에서 발생하는 대신 가능한 모든 나머지를 표시하도록 파이썬을 얻으려면 어떻게해야합니까?
- 28. 숫자의 보통 변경
- 29. 파이썬 - 숫자의 합
- 30. 큰 따옴표 사이의 모든 큰 따옴표를 제거하십시오.
. 그것이 공개 키 암호화 알고리즘이 작동하는 이유입니다. 많은 수 (약 10^200)를 고려하면 실용적이지 못합니다. –
@PeteBecker'10^18'은 재판 부문에서 완전히 짐승처럼 강요합니다. '10^9' 부서는 괜찮은 컴퓨터에서 아마 몇 분 밖에 걸리지 않을 것입니다. 그러나 OP가 "너무 느린"것을 결코 지정하지 않았다고 가정합니다. – Mysticial
@ 신비로운 - 충분히 공평합니다. 나는 인수 분해의 속도를 높이는 것에 관한 일반적인 지적을하고있었습니다. –