큰수 계산하는 프로그램 뭐뭐 있을까요?

  • #299343
    타고난혀 38.***.222.120 8462

    죽창 전공 공부 하는데, 계산 할께 참 많은것 같습니다..

    뭐 공식도 공식이지만, 달랑 값 하나 주고선 나머지 값을 구하라는 노가다를 보고 있노라면, 참 성격이 점점 요상하게 변해가는걸 느껴집니다.

    큰수 계산기계산하는 프로그램이 있는지요?

    10^-34 요런 단위로 가는건 큰 문제가 안되는데, 정작 문제가 되는건,

    20자리수 곱하기 24자리수 이런게 문제가 되고 있습니다.(주로 소인수분해문제 입니다)

    또 20자리수 * 24자리 곱한다음에 mod 연산까지 해야 하는데, 요런거 지원해주는 프로그램 뭐뭐 있는지 알고 계시면 부탁 드리겠습니다.

    그럼 좋은 하루 되세요.

    • ISP 208.***.196.57

      이래서 수학 잘해야 하는 거고, 알고리듬 잘해야 하는겁니다.
      그렇게 큰수를 계산하는 데에 쓰이는 여러가지 알고리듬이 있습니다.
      그리고 너무 큰수라 메모리안에 다 안들어 올경우에는 메모리 나눠서 따로따로 계산한 후에 나중에 같이 붙여 버리는 방법도 씁니다.

    • ISP 208.***.196.57

      참고로, 구구단 테이블을 사칙연산중에서 곱셈을 쓰지 않고 덧셈으로만
      구연한다고 생각해 보시면 됩니다. 어셈블러 배우면서 곱셈이 없어서 Adder 가지고 곱셈을 구연했던걸 생각 하시면 될겁니다.

      인터뷰 할때에 math libarary 안쓰고 로가리듬 계산해 봐라 라는 문제도 내더군요.

    • gonfly 216.***.162.100

      인터넷으로 big number calculation 구굴링 하니깐 자바 애플릿으로 몇개가 나오네요. 한번 찾아보세요…

    • …. 70.***.204.120

      이래서들 경력직은 페이가 높은가 봅니다.

    • 타고난혀 38.***.222.120

      ISP님 말씀 하신것처럼 어느정도 기본 연산 + – 는 구현을 해 놔서 큰 문제가 안되는데요, 가장 문제가 되는건 150 자리 수를 100자리 수로 mod할 경우가 문제가 되기에 물어 본건데요.

      예를 들어서 단순 곱셈은 289472398472 * 9999 이라면, 앞의 숫자를 9999번 덧셈을 하면 됩니다, 즉 실행되는건 9999번 연산으로 답을 구할수 있는데요.

      문제는 대략 923048290842908430820308203413128209308203482093482093 이런식의 숫자를 308203482093082034820930820348209 이런걸로 나눠서 나머지를 구할때 발생 합니다.

      또 923048290842908430820308203413128209308203482093482093 위의 수를 소인수 분해(2^x + 3^y +5^z+7^aa)^cc 이런식으로 분해를 해도 한참 걸리는것 같습니다, 결국 큰수를 2로 쪼개야 하는 과정이 문제 인데요.

      알고리즘 몇개 뒤져 보면, 제곱승의 modular 연산이란게 있는데요, 이걸 구현한다 치더라도, 과연 계산 속도가 얼마나 될지가 미지수기에, 혹시 이러한 고민을 하시다가 찾으신분 계시나 해서 여쭤 보는거에요.

    • 타고난혀 38.***.222.120

      ..노가다 하신분 있으시면 청사진 제공좀 부탁 드립니다요.. 근데 저는 씨 언어를 좋아 하지만, 결국 이렇게 큰수 연산으로 갈경우 비트 레벨까지 내려 가는게 더 효율적이다라고 생각 하는 사람입니다..

      근데 머리가 안딸아 주니 죽을지경이네요.

    • zoaid 66.***.77.92

      예전에 RSA 알고리즘 구현할 때 해 봤었는데, mod 뿐만아니고 여러가지 편리한 함수들이 많이 있습니다.
      C/C++ 에서는 The GNU MP Bignum Library 로 하시면 되고, java에서는 BigInteger class로 하시면 될 것 같습니다.

    • 타고난혀 38.***.222.120

      zoaid님 감사 합니다.

      이거 잼있네요.. 그 피나게 노가다 하던게, 0.1초만에 딱 나오네요..

    • robin 66.***.178.196

      matlab이란 프로그램 써보세요

Cancel