【Visual Studio 2017】MPIR(GMP) 도입 방법【다배장 정수 라이브러리】
소개
이번에는 Visual Studio 2017에서 MPIR(GMP)의 도입 방법에 대해 설명합니다.
そろそろMPIR(GMP)に手を出してみようかな
라고 생각하는 분이나,Visual StudioでプログラミングしてるけどMPIR(GMP)の入れ方がわからない
라는 분을 향해 쓰고 있습니다.
이것을 보면 누구나 MPIR(GMP)를 도입할 수 있다! 해야
다운로드
⇒여기에서 MPIR〇〇source.zip을 다운로드합니다.
MPIR〇〇source.zip을 선택합니다.
이 설명에서는 MPIR 3.0.0 source.zip
를 사용합니다.
다운로드 후
다운로드한 MPIR〇〇source.zip을 すべて展開(解凍)
합니다.
이번에는 배포 위치를 Cドライブ直下(Windows (C:))
에 둡니다.
배포에는 적당한 시간이 걸립니다.
배포가 끝나면 다음.
dll_mpir_gc 빌드
확장된 폴더C:\mpir-〇〇
를 열면build.vcXX
(XX는 숫자)라는 폴더가 있다고 생각합니다.
1번 숫자가 큰 것을 열어 주세요.
mpir.sln
파일이 있으므로 Visual Studio 2017에서 시작합니다.
이 설명에서는 C:\mpir-3.0.0\build.vc15\mpir.sln
에있었습니다.
시작하면 먼저 왼쪽 상단에Debug
를 Release
로Win32
를 x64
로 변경하십시오.
그런 다음 솔루션 탐색기에서
dll_mpir_gc를 선택하고 마우스 오른쪽 버튼을 클릭하면 나옵니다.
프로젝트의 재대상을 선택합니다.
확인을 선택합니다.
다음도 솔루션 탐색기에서
dll_mpir_gc를 선택하고 마우스 오른쪽 버튼을 클릭하면 나옵니다.
빌드를 선택합니다.
무사히 출력할 수 있었습니다.
mpir.sln
를 닫습니다.
Visual Studio에서 설정
그런데, 여기부터가 프로덕션입니다.
화면의 메뉴에서 プロジェクト(P)
에서 〇〇のプロパティ
를 누릅니다.
왼쪽 C/C++
⇒ 全般
⇒ 追加のインクルードディレクトリ
에 다음을 추가합니다.
※다운로드한 MPIR(GMP)의 버젼에 따라서 적절히, 이름을 바꾸어 주세요.
C:\mpir-3.0.0
왼쪽 リンカー
⇒ 全般
⇒ 追加のライブラリディレクトリ
에 다음 중 하나를 추가합니다.
※다운로드한 MPIR(GMP)의 버젼에 따라서 적절히, 이름을 바꾸어 주세요.
x86의 경우C:\mpir-3.0.0\build.vc15\dll_mpir_gc\Win32\Release
x64의 경우C:\mpir-3.0.0\build.vc15\dll_mpir_gc\x64\Release
왼쪽 リンカー
⇒ 入力
⇒ 追加の依存ファイル
에 다음을 추가합니다.
※다운로드한 MPIR(GMP)의 버젼에 따라서 적절히, 이름을 바꾸어 주세요.
mpir.lib
이번에는 콘솔 프로젝트로 사용하기 때문에,
왼쪽 リンカー
⇒ システム
⇒ サブシステム
コンソール (/SUBSYSTEM:CONSOLE)
합시다.
마지막으로 만든 프로젝트의
소스 코드가 들어있는 폴더에mpir.dll
넣으면 준비 완료입니다.
mpir.dll
는 C:\mpir-〇〇\dll\(Win32 or x64)\Release
에 있습니다.
프로젝트 이름을 마우스 오른쪽 버튼으로 클릭한 후,
"탐색기에서 폴더 열기"
을 누르면 해당 폴더가 열립니다.
이 해설에서는C:\mpir-3.0.0\dll\x64\Release\mpir.dll
에 있었다.
MPIR (GMP)을 사용할 수 있는지 테스트
이번에는 메르센 소수를 구합시다.
Source.hpp#include <cstdint>
#include <iostream>
#include <mpirxx.h>
#include <chrono>
bool lucasLehmerTest(const int_fast32_t p_) {
mpz_class m = 1;
m <<= p_;
--m;
mpz_class s = 4;
for (int_fast32_t i = 2; i < p_; ++i)
s = (s*s - 2) % m;
if (s == 0) return true;
return false;
}
bool lucasLehmerTestFast(const int_fast32_t p_) {
mpz_class m{ 1 };
m <<= p_;
--m;
mpz_class s{ 4 };
mpz_class sqrt;
for (int_fast32_t i{ 2 }; i < p_; ++i) {
sqrt = s * s;
s = (sqrt & m) + (sqrt >> p_);
if (s >= m) s -= m;
s -= 2;
}
if (s == 0) return true;
return false;
}
int main() {
std::chrono::system_clock::time_point start, end;
start = std::chrono::system_clock::now();
if (lucasLehmerTestFast(9689)) std::cout << "TRUE" << std::endl;
else std::cout << "FALSE" << std::endl;
end = std::chrono::system_clock::now();
std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count() << std::endl;
return 0;
}
출력 결과TRUE
232
실행할 수 있었습니다!
소스 코드 라이센스
These codes are licensed under CC0.
소스 코드는 자유롭게 사용하십시오.
Reference
이 문제에 관하여(【Visual Studio 2017】MPIR(GMP) 도입 방법【다배장 정수 라이브러리】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/gis/items/92b7fbf279d3ca6227fe
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
⇒여기에서 MPIR〇〇source.zip을 다운로드합니다.
MPIR〇〇source.zip을 선택합니다.
이 설명에서는
MPIR 3.0.0 source.zip
를 사용합니다.다운로드 후
다운로드한 MPIR〇〇source.zip을 すべて展開(解凍)
합니다.
이번에는 배포 위치를 Cドライブ直下(Windows (C:))
에 둡니다.
배포에는 적당한 시간이 걸립니다.
배포가 끝나면 다음.
dll_mpir_gc 빌드
확장된 폴더C:\mpir-〇〇
를 열면build.vcXX
(XX는 숫자)라는 폴더가 있다고 생각합니다.
1번 숫자가 큰 것을 열어 주세요.
mpir.sln
파일이 있으므로 Visual Studio 2017에서 시작합니다.
이 설명에서는 C:\mpir-3.0.0\build.vc15\mpir.sln
에있었습니다.
시작하면 먼저 왼쪽 상단에Debug
를 Release
로Win32
를 x64
로 변경하십시오.
그런 다음 솔루션 탐색기에서
dll_mpir_gc를 선택하고 마우스 오른쪽 버튼을 클릭하면 나옵니다.
프로젝트의 재대상을 선택합니다.
확인을 선택합니다.
다음도 솔루션 탐색기에서
dll_mpir_gc를 선택하고 마우스 오른쪽 버튼을 클릭하면 나옵니다.
빌드를 선택합니다.
무사히 출력할 수 있었습니다.
mpir.sln
를 닫습니다.
Visual Studio에서 설정
그런데, 여기부터가 프로덕션입니다.
화면의 메뉴에서 プロジェクト(P)
에서 〇〇のプロパティ
를 누릅니다.
왼쪽 C/C++
⇒ 全般
⇒ 追加のインクルードディレクトリ
에 다음을 추가합니다.
※다운로드한 MPIR(GMP)의 버젼에 따라서 적절히, 이름을 바꾸어 주세요.
C:\mpir-3.0.0
왼쪽 リンカー
⇒ 全般
⇒ 追加のライブラリディレクトリ
에 다음 중 하나를 추가합니다.
※다운로드한 MPIR(GMP)의 버젼에 따라서 적절히, 이름을 바꾸어 주세요.
x86의 경우C:\mpir-3.0.0\build.vc15\dll_mpir_gc\Win32\Release
x64의 경우C:\mpir-3.0.0\build.vc15\dll_mpir_gc\x64\Release
왼쪽 リンカー
⇒ 入力
⇒ 追加の依存ファイル
에 다음을 추가합니다.
※다운로드한 MPIR(GMP)의 버젼에 따라서 적절히, 이름을 바꾸어 주세요.
mpir.lib
이번에는 콘솔 프로젝트로 사용하기 때문에,
왼쪽 リンカー
⇒ システム
⇒ サブシステム
コンソール (/SUBSYSTEM:CONSOLE)
합시다.
마지막으로 만든 프로젝트의
소스 코드가 들어있는 폴더에mpir.dll
넣으면 준비 완료입니다.
mpir.dll
는 C:\mpir-〇〇\dll\(Win32 or x64)\Release
에 있습니다.
프로젝트 이름을 마우스 오른쪽 버튼으로 클릭한 후,
"탐색기에서 폴더 열기"
을 누르면 해당 폴더가 열립니다.
이 해설에서는C:\mpir-3.0.0\dll\x64\Release\mpir.dll
에 있었다.
MPIR (GMP)을 사용할 수 있는지 테스트
이번에는 메르센 소수를 구합시다.
Source.hpp#include <cstdint>
#include <iostream>
#include <mpirxx.h>
#include <chrono>
bool lucasLehmerTest(const int_fast32_t p_) {
mpz_class m = 1;
m <<= p_;
--m;
mpz_class s = 4;
for (int_fast32_t i = 2; i < p_; ++i)
s = (s*s - 2) % m;
if (s == 0) return true;
return false;
}
bool lucasLehmerTestFast(const int_fast32_t p_) {
mpz_class m{ 1 };
m <<= p_;
--m;
mpz_class s{ 4 };
mpz_class sqrt;
for (int_fast32_t i{ 2 }; i < p_; ++i) {
sqrt = s * s;
s = (sqrt & m) + (sqrt >> p_);
if (s >= m) s -= m;
s -= 2;
}
if (s == 0) return true;
return false;
}
int main() {
std::chrono::system_clock::time_point start, end;
start = std::chrono::system_clock::now();
if (lucasLehmerTestFast(9689)) std::cout << "TRUE" << std::endl;
else std::cout << "FALSE" << std::endl;
end = std::chrono::system_clock::now();
std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count() << std::endl;
return 0;
}
출력 결과TRUE
232
실행할 수 있었습니다!
소스 코드 라이센스
These codes are licensed under CC0.
소스 코드는 자유롭게 사용하십시오.
Reference
이 문제에 관하여(【Visual Studio 2017】MPIR(GMP) 도입 방법【다배장 정수 라이브러리】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/gis/items/92b7fbf279d3ca6227fe
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
확장된 폴더
C:\mpir-〇〇
를 열면build.vcXX
(XX는 숫자)라는 폴더가 있다고 생각합니다.1번 숫자가 큰 것을 열어 주세요.
mpir.sln
파일이 있으므로 Visual Studio 2017에서 시작합니다.이 설명에서는
C:\mpir-3.0.0\build.vc15\mpir.sln
에있었습니다.시작하면 먼저 왼쪽 상단에
Debug
를 Release
로Win32
를 x64
로 변경하십시오.그런 다음 솔루션 탐색기에서
dll_mpir_gc를 선택하고 마우스 오른쪽 버튼을 클릭하면 나옵니다.
프로젝트의 재대상을 선택합니다.
확인을 선택합니다.
다음도 솔루션 탐색기에서
dll_mpir_gc를 선택하고 마우스 오른쪽 버튼을 클릭하면 나옵니다.
빌드를 선택합니다.
무사히 출력할 수 있었습니다.
mpir.sln
를 닫습니다.Visual Studio에서 설정
그런데, 여기부터가 프로덕션입니다.
화면의 메뉴에서 プロジェクト(P)
에서 〇〇のプロパティ
를 누릅니다.
왼쪽 C/C++
⇒ 全般
⇒ 追加のインクルードディレクトリ
에 다음을 추가합니다.
※다운로드한 MPIR(GMP)의 버젼에 따라서 적절히, 이름을 바꾸어 주세요.
C:\mpir-3.0.0
왼쪽 リンカー
⇒ 全般
⇒ 追加のライブラリディレクトリ
에 다음 중 하나를 추가합니다.
※다운로드한 MPIR(GMP)의 버젼에 따라서 적절히, 이름을 바꾸어 주세요.
x86의 경우C:\mpir-3.0.0\build.vc15\dll_mpir_gc\Win32\Release
x64의 경우C:\mpir-3.0.0\build.vc15\dll_mpir_gc\x64\Release
왼쪽 リンカー
⇒ 入力
⇒ 追加の依存ファイル
에 다음을 추가합니다.
※다운로드한 MPIR(GMP)의 버젼에 따라서 적절히, 이름을 바꾸어 주세요.
mpir.lib
이번에는 콘솔 프로젝트로 사용하기 때문에,
왼쪽 リンカー
⇒ システム
⇒ サブシステム
コンソール (/SUBSYSTEM:CONSOLE)
합시다.
마지막으로 만든 프로젝트의
소스 코드가 들어있는 폴더에mpir.dll
넣으면 준비 완료입니다.
mpir.dll
는 C:\mpir-〇〇\dll\(Win32 or x64)\Release
에 있습니다.
프로젝트 이름을 마우스 오른쪽 버튼으로 클릭한 후,
"탐색기에서 폴더 열기"
을 누르면 해당 폴더가 열립니다.
이 해설에서는C:\mpir-3.0.0\dll\x64\Release\mpir.dll
에 있었다.
MPIR (GMP)을 사용할 수 있는지 테스트
이번에는 메르센 소수를 구합시다.
Source.hpp#include <cstdint>
#include <iostream>
#include <mpirxx.h>
#include <chrono>
bool lucasLehmerTest(const int_fast32_t p_) {
mpz_class m = 1;
m <<= p_;
--m;
mpz_class s = 4;
for (int_fast32_t i = 2; i < p_; ++i)
s = (s*s - 2) % m;
if (s == 0) return true;
return false;
}
bool lucasLehmerTestFast(const int_fast32_t p_) {
mpz_class m{ 1 };
m <<= p_;
--m;
mpz_class s{ 4 };
mpz_class sqrt;
for (int_fast32_t i{ 2 }; i < p_; ++i) {
sqrt = s * s;
s = (sqrt & m) + (sqrt >> p_);
if (s >= m) s -= m;
s -= 2;
}
if (s == 0) return true;
return false;
}
int main() {
std::chrono::system_clock::time_point start, end;
start = std::chrono::system_clock::now();
if (lucasLehmerTestFast(9689)) std::cout << "TRUE" << std::endl;
else std::cout << "FALSE" << std::endl;
end = std::chrono::system_clock::now();
std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count() << std::endl;
return 0;
}
출력 결과TRUE
232
실행할 수 있었습니다!
소스 코드 라이센스
These codes are licensed under CC0.
소스 코드는 자유롭게 사용하십시오.
Reference
이 문제에 관하여(【Visual Studio 2017】MPIR(GMP) 도입 방법【다배장 정수 라이브러리】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/gis/items/92b7fbf279d3ca6227fe
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
C:\mpir-3.0.0
C:\mpir-3.0.0\build.vc15\dll_mpir_gc\Win32\Release
C:\mpir-3.0.0\build.vc15\dll_mpir_gc\x64\Release
mpir.lib
コンソール (/SUBSYSTEM:CONSOLE)
이번에는 메르센 소수를 구합시다.
Source.hpp
#include <cstdint>
#include <iostream>
#include <mpirxx.h>
#include <chrono>
bool lucasLehmerTest(const int_fast32_t p_) {
mpz_class m = 1;
m <<= p_;
--m;
mpz_class s = 4;
for (int_fast32_t i = 2; i < p_; ++i)
s = (s*s - 2) % m;
if (s == 0) return true;
return false;
}
bool lucasLehmerTestFast(const int_fast32_t p_) {
mpz_class m{ 1 };
m <<= p_;
--m;
mpz_class s{ 4 };
mpz_class sqrt;
for (int_fast32_t i{ 2 }; i < p_; ++i) {
sqrt = s * s;
s = (sqrt & m) + (sqrt >> p_);
if (s >= m) s -= m;
s -= 2;
}
if (s == 0) return true;
return false;
}
int main() {
std::chrono::system_clock::time_point start, end;
start = std::chrono::system_clock::now();
if (lucasLehmerTestFast(9689)) std::cout << "TRUE" << std::endl;
else std::cout << "FALSE" << std::endl;
end = std::chrono::system_clock::now();
std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count() << std::endl;
return 0;
}
출력 결과
TRUE
232
실행할 수 있었습니다!
소스 코드 라이센스
These codes are licensed under CC0.
소스 코드는 자유롭게 사용하십시오.
Reference
이 문제에 관하여(【Visual Studio 2017】MPIR(GMP) 도입 방법【다배장 정수 라이브러리】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gis/items/92b7fbf279d3ca6227fe텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)