|
The Charmsec code is an error-correcting code invented by the author and is a block code that encodes data into printable characters.
The name 'Charmsec' is derived from Characterized Reminder Set Error Correcting code.
This code can tolerate errors in characters in the code characters and can decode them. The following example implementation can deal with a single character error.
There are a number of ranges (super data) that can be handled beyond the size of the data length by using the surplus of information entropy.
In the implementation example below, LF (0x0a) can be used as a code delimiter with 1-bit error correction.
It is suitable for device-to-device communications in asynchronous serial communications such as RS-232, RS-422, and RS-485.
Suitable for applications where both real-time performance and transmission efficiency are required (e.g., transmission of control signals for industrial robots and vehicles).
Printable characters facilitate logging and e-mail attachments.
As the required resource is as small as 8 kbytes, it can be easily implemented in a relatively small systems.
There are several types of Charmsec codes, the followings are some of the most popular ones in practical use.
Example of Charmsec code character mapping to 7-bit ASCII code (Delimiter : LF, Excluded character : ∖)
Note 1 : NL (0x0A) can be used as a code block delimiter with 1-bit error correction since 1-bit errors in NL (0x0A) are mapped not to be a code character.
Note 2 : Since ∖ (0x5C) is also excluded from the code character, ∖ can be used as an error position indicator, etc.
Charmsec7_5C Single-character error correcting characterization code
Encodes 44-bit data into a 9-char ASCII string. Excluded characters are ∖.
The encoding rate is about 0.698. Compared to Base64, the encoded character is increased by approximately 22%.
Examples of Encoding and Decoding
Sun, 25 Aug 2024 05:16:42 +0900 Charmsec7_5c_demo : Rev.1.97 (Aug. 25, 2024) (c) 2004 Takayuki HOSODA, Finetune co., ltd. Charmsec7_5c_demo : Using charmsec8_5c - a subset of the Charmsec CoDec library. Charmsec7_5c_demo : '\' is to be used as the error position indicator here. Charmsec7_5c_demo : txdata = 0x0000badcafebabe -> txcode = gMbVtv'no Charmsec7_5c_demo : rxdata = 0x0000badcafebabe <- rxcode = \MbVtv'no - Corrected an error Charmsec7_5c_demo : rxdata = 0x0000badcafebabe <- rxcode = g\bVtv'no - Corrected an error Charmsec7_5c_demo : rxdata = 0x0000badcafebabe <- rxcode = gM\Vtv'no - Corrected an error Charmsec7_5c_demo : rxdata = 0x0000badcafebabe <- rxcode = gMb\tv'no - Corrected an error Charmsec7_5c_demo : rxdata = 0x0000badcafebabe <- rxcode = gMbV\v'no - Corrected an error Charmsec7_5c_demo : rxdata = 0x0000badcafebabe <- rxcode = gMbVt\'no - Corrected an error Charmsec7_5c_demo : rxdata = 0x0000badcafebabe <- rxcode = gMbVtv\no - Corrected an error Charmsec7_5c_demo : rxdata = 0x0000badcafebabe <- rxcode = gMbVtv'\o - Corrected an error Charmsec7_5c_demo : rxdata = 0x0000badcafebabe <- rxcode = gMbVtv'n\ - Corrected an error Charmsec7_5c_demo : txdata = 0x000141d4a551717 -> txcode = ikquwyzdm (saturated) Charmsec7_5c_demo : rxdata = 0x000141d4a551717 <- rxcode = \kquwyzdm (superdata) - Corrected an error Charmsec7_5c_demo : rxdata = 0x000141d4a551717 <- rxcode = i\quwyzdm (superdata) - Corrected an error Charmsec7_5c_demo : rxdata = 0x000141d4a551717 <- rxcode = ik\uwyzdm (superdata) - Corrected an error Charmsec7_5c_demo : rxdata = 0x000141d4a551717 <- rxcode = ikq\wyzdm (superdata) - Corrected an error Charmsec7_5c_demo : rxdata = 0x000141d4a551717 <- rxcode = ikqu\yzdm (superdata) - Corrected an error Charmsec7_5c_demo : rxdata = 0x000141d4a551717 <- rxcode = ikquw\zdm (superdata) - Corrected an error Charmsec7_5c_demo : rxdata = 0x000141d4a551717 <- rxcode = ikquwy\dm (superdata) - Corrected an error Charmsec7_5c_demo : rxdata = 0x000141d4a551717 <- rxcode = ikquwyz\m (superdata) - Corrected an error Charmsec7_5c_demo : rxdata = 0x000141d4a551717 <- rxcode = ikquwyzd\ (superdata) - Corrected an error
▼ Charmsec7_5C Implementation Example (Click to expand)
/** About this program Charmsec7-5c : This program is a demonstration program for an error correcting characterization code based on the Charmsec CoDec library Rev. 1.9x, an example application of JP-A2021-202714. This code is capable of correcting single-character errors. Charmsec is an error-correcting code that uses the Chinese remainder theorem to encode information data into a set of characters - especially ASCII characters. http://www.finetune.co.jp/~lyuka/technote/charmsec/ */ #include <stdint.h> #include <inttypes.h> /* Charmsec7 (9c, 44) */ #define NUM_COPRIME 9 #define DATA_LEN 44 #define NUM_SUBSET (NUM_COPRIME - 2) #define CHARMS_LEN (NUM_COPRIME + 3) typedef struct { uint64_t status; uint64_t data; char code[CHARMS_LEN]; const int data_len; const uint64_t data_mask; const int charms_len; // Length of the code string encoded by Charmsec const int num_coprime; // number of coprime numbers const int num_subset; // number of subset of the coprime number set const uint8_t ascii_mask; const char cmap[93]; // charactor mapping table (92 characters + \0) const uint8_t rmap[128]; // charactor reverse mapping table const uint64_t coprime[NUM_COPRIME]; // coprimes const uint64_t modmax[NUM_COPRIME]; // Maximum value of the modulus system const uint64_t minmodmax; const uint64_t invmat[NUM_COPRIME][NUM_COPRIME];// Mudulus invert of the modulus system const uint64_t corrected; // decode result flag : corrected const uint64_t detected; // decode result flag : detected const uint64_t superdata; // decode result flag : super code const char *title; const char *version; const char *copyright; } charms_t; int ischarms(char); char *encode(uint64_t); uint64_t decode(char *); charms_t charms = { 0, //.status 0, //.data {0, 0, 0, 0, 0, 0, 0, 0, 0}, //.code DATA_LEN, //.data_len ~0UL >> (64 - DATA_LEN), //.data_mask CHARMS_LEN, //.charms_len NUM_COPRIME, //.num_coprime NUM_SUBSET, //.num_subset 0x7f, //.ascii_mask "!\"#$%&'()+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~",//.cmap { 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,\ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,\ 127, 0, 1, 2, 3, 4, 5, 6, 7, 8, 127, 9, 10, 11, 12, 13,\ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,\ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,\ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 127, 58, 59, 60,\ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,\ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 127},//.rmap /* Charmsec7-5c */ { 71, 73, 79, 83, 85, 87, 88, 89, 91}, //.coprime { 22116033697560, 27722915480040, 34558702858680, 31059087379320, 27317028658920, 25388767812408, 24221468142872, \ 23395736274365, 22869989391795}, //.modmax 0x0000141d4a551718, //.minmodmax { { 9033309538440, 4544390485800, 3639347317320, 11457704204760, 9366790742496, 13981400613400, 14325158190465, 0, 0}, \ { 0, 23545489859760, 12984150288120, 26720882390400, 14350685660256, 26129644475440, 27407882349585, 7475842376640, 0}, \ { 0, 0, 9186490633320, 27480414321360, 33338983934256, 24230814648040, 1963562662425, 29122502409000, 12912042826320}, \ { 15748269657120, 0, 0, 8232529184880, 8404223643816, 26418074322640, 4588274271945, 4187742118560, 25598148939000}, \ { 1154240647560, 25071793426680, 0, 0, 5784782539536, 14443486417360, 19556509153545, 15039712407720, 900561384360}, \ { 8224530418104, 21215271733656, 16068840387600, 0, 0, 16050370456120, 6058683227961, 20824494947256, 13112880078936}, \ { 2388032070424, 8958625203528, 6438618113928, 6128323265064, 0, 0, 15688905501633, 14696171682192, 18365728591848}, \ { 14498766141860, 16665455976260, 21026547790885, 3100639747205, 2477195605521, 0, 0, 15246659594530, 20567680241200}, \ { 4509575373030, 15351088769835, 19975054025745, 15981438370170, 4843056577086, 20767001861515, 0, 0, 10052742589800} }, //.invmat /* decode status at bit 63..61 */ 1ULL << 61, //.corrected 1ULL << 62, //.detected 1ULL << 63, //.superdata "charmsec8_5c - a subset of the Charmsec CoDec library.",//.title "Rev.1.97 (Aug. 25, 2024)", //.version "(c) 2004 Takayuki HOSODA, Finetune co., ltd." //.copyright }; int ischarms(char c) { return charms.rmap[(int)c] == charms.ascii_mask ? 0 : charms.ascii_mask; } char * encode(uint64_t data) { int i; if (data >= charms.minmodmax) data = (charms.minmodmax - 1UL); for (i = 0; i < charms.num_coprime; i++) { charms.code[i] = charms.cmap[data % charms.coprime[i]]; } charms.code[i] = '\0'; return charms.code; } /** decode() return value no error : data, superdata corrected : data, superdate | charms.corrected detected : charms.detected */ uint64_t decode(char *code) { int i, j; uint8_t a[NUM_COPRIME]; uint64_t b[NUM_COPRIME]; uint64_t data = 0; /* decompose code */ for (i = 0; i < charms.num_coprime; i++) { a[i] = charms.rmap[(int)code[i] & charms.ascii_mask]; } /* majority decision */ /* subdecode 0 to 2 */ for (i = 0; i < 3; i++) { /* subdecode */ data = 0; /* mul-add in uint64_t followed by remainder calculation */ for (j = 0; j < charms.num_coprime; j++) { data = data + a[j] * charms.invmat[i][j]; } data %= charms.modmax[i]; b[i] = data; } data = b[0]; charms.status = charms.detected; if ((data == b[1]) && (data == b[2])) { charms.status = 0; } else { /* subdecode 3 to charms.num_coprime */ for (i = 3; i < charms.num_coprime; i++) { /* subdecode*/ data = 0; /* mul-add in uint64_t followed by remainder calculation */ for (j = 0; j < charms.num_coprime; j++) { data = data + a[j] * charms.invmat[i][j]; } data %= charms.modmax[i]; b[i] = data; } data = b[0]; /* compare adjacent data to find correct data. */ if (data == b[charms.num_coprime - 1]) { charms.status = charms.corrected; } else { for (i = 0; i < charms.num_coprime - 1; i++) { if (b[i] == b[i + 1]) { charms.status = charms.corrected; data = b[i]; break; } } } } if (data > charms.data_mask) charms.status |= charms.superdata; return data; } #ifdef DEBUG #include <stdio.h> #ifndef PRIx64 #define PRIx64 "llx"// uint64_t #endif const char *myname = "Charmsec7_5c_demo"; int main() { int i, j; char rxcode[CHARMS_LEN]; char rxdisp[CHARMS_LEN]; uint64_t rxdata, data; rxdata = 0UL; for (i = 0; i < charms.charms_len; i++) rxcode[i] = rxdisp[i] = '\0'; printf("%s : %s %s\n", myname, charms.version, charms.copyright); printf("%s : Using %s\n", myname, charms.title); printf("%s : '\\' is to be used as the error position indicator here.\n", myname); for (i = 0; i < charms.charms_len; i++) rxcode[i] = '\0';// initialize rxcode. Note that '\0' is not a Charmsec code charactor. data = 0xbadcafebabe;// A test data of 44-bit unsigned integer. printf("%s : txdata = 0x%015" PRIx64 " -> txcode = %s%s\n", myname, \ data, encode(data), data > charms.data_mask ? data < charms.minmodmax - 1UL ? " (super data)" : " (saturated)" : ""); for (j = 0; j < charms.num_coprime; j++) { for (i = 0; i < charms.charms_len; i++) rxcode[i] = charms.code[i]; rxcode[j] = '\t';// insert single character error. Note that '\t' is not a Charmsec code character. rxdata = decode(rxcode); for (i = 0; i < charms.num_coprime; i++) rxdisp[i] = ischarms(rxcode[i]) ? rxcode[i] : '\\'; printf("%s : rxdata = 0x%015" PRIx64 " <- rxcode = %s%s - %s\n", myname, rxdata, rxdisp, charms.status & charms.superdata ? " (superdata)" : "", charms.status & charms.corrected ? "Corrected an error" : charms.status & charms.detected ? "Unrecoverable error detected" : "No error"); } data = charms.minmodmax - 1UL;// the maximum value for superdata printf("%s : txdata = 0x%015" PRIx64 " -> txcode = %s%s\n", myname, \ data, encode(data), data > charms.data_mask ? data < charms.minmodmax - 1UL ? " (super data)" : " (saturated)" : ""); for (j = 0; j < charms.num_coprime; j++) { for (i = 0; i < charms.charms_len; i++) rxcode[i] = charms.code[i]; rxcode[j] = '\t';// insert single character error. Note that '\t' is not a Charmsec code character. rxdata = decode(rxcode); for (i = 0; i < charms.num_coprime; i++) rxdisp[i] = ischarms(rxcode[i]) ? rxcode[i] : '\\'; printf("%s : rxdata = 0x%015" PRIx64 " <- rxcode = %s%s - %s\n", myname, rxdata, rxdisp, charms.status & charms.superdata ? " (superdata)" : "", charms.status & charms.corrected ? "Corrected an error" : charms.status & charms.detected ? "Unrecoverable error detected" : "No error"); } return 0; } #endif
Download archive : charmsec7_5c_demo-1.97.tar.gz [4kB tar.gz]
One of the features of Charmsec is the use of super data to send one-shot data or control codes in between data streams, It can also be used for end of data stream, check bits, timestamps, etc.
The figure below shows an example of using Charmsec7 in RS-485 multi-drop communication between a device and a robot.
![]()
▼ Excerpt from the patent specification (click to expand)
y”–¾‚Ì–¼Ìzƒf[ƒ^’ÊMƒVƒXƒeƒ€A‘—M‘•’uA‚¨‚æ‚ÑŽóM‘•’u y‹Zp•ª–ìz @y‚O‚O‚O‚Pz @–{”–¾‚ÍAŒë‚è’ù³‚ª‰Â”\‚È’ÊMƒVƒXƒeƒ€‚ÉŠÖ‚·‚éB y”wŒi‹Zpz @y‚O‚O‚O‚Qz @ƒf[ƒ^‚Ì“`‘—‚ª•¶Žš‚âƒoƒCƒg’PˆÊ‚Ås‚í‚ê‚é’ÊM”}‘Ì‚ð—p‚¢‚éƒfƒWƒ^ƒ‹ƒf[ƒ^“`‘—‚É‚¨ ‚¢‚ÄAƒfƒWƒ^ƒ‹ƒf[ƒ^‚ðˆóŽš‰Â”\‚È•¶Žš‚ɕϊ·‚µ‚Ä“`‘—‚·‚éƒR[ƒfƒbƒNi•„†‰»^•œ†j ‚ª—p‚¢‚ç‚ê‚Ä‚¢‚éi—Ⴆ‚ΓdŽqƒ[ƒ‹‚É‚¨‚¯‚é‚l‚h‚l‚d@‚a‚`‚r‚d‚U‚SƒR[ƒfƒbƒNjB‚± ‚̂悤‚ȃR[ƒfƒbƒN‚É‚¨‚¢‚ÄAƒfƒWƒ^ƒ‹ƒf[ƒ^‚Éç’·“x‚ð•t‰Á‚µ‚½Œë‚è’ù³•„†‚ɕϊ·‚µ A‚»‚ê‚ðˆóŽš‰Â”\‚È•¶Žš‚Ì‘g‚Éĕϊ·‚µ‚Ä‘—M‚µAŽóM‚µ‚½•¶Žš‚Ì‘g‚ðŒë‚è’ù³•„†‚É•Ï Š·‚µ‚Ä•œ†‚µ“`‘—Žž‚É•¶Žš‚ɶ‚¶‚½Œë‚è‚̉e‹¿‚𜋎‚·‚邱‚Ƃɂæ‚Á‚ăfƒWƒ^ƒ‹ƒf[ƒ^‚ð ‰ñ•œ‚·‚邱‚Æ‚ª‚Å‚«‚éB y”–¾‚ÌŠT—vz y”–¾‚ª‰ðŒˆ‚µ‚悤‚Æ‚·‚é‰Û‘èz @y‚O‚O‚O‚Rz @‚µ‚©‚µ‚È‚ª‚çAãq‚̂悤‚ȃR[ƒfƒbƒN‚Å‚ÍAŒë‚è’ù³•„†‰»‚Æ•¶Žš‰»‚ª•ÊX‚És‚í‚ê ‚é‚½‚ßA“`‘—Žž‚É•¶Žš‚ɶ‚¶‚éŒë‚肪•¶Žš‚©‚ç‚̕ϊ·Žž‚ÉŠg‘å‚·‚邱‚Æ‚ª‚ ‚éB‚Ü‚½A•„ †‰»‚É‚à•¶Žš‰»‚É‚àç’·“x‚ª•K—v‚È‚½‚߂ɕ„†‰»—¦‚ª’á‚A•„†‰»—¦‚ð‰ü‘P‚µ‚悤‚Æ‚·‚é ‚Æ‚P‚‚̓`‘—’PˆÊ‚ª‘å‚«‚‚Ä“`‘—ˆ—’x‰„‚ª‘å‚«‚‚È‚Á‚Ä‚µ‚Ü‚¤B‚Ü‚½A•„†‚Ì‹æØ‚è‚ð ’m‚邽‚߂̓¯Šúƒ[ƒh‚â“`‘—ƒTƒCƒY‚Ȃǂ̕t‘Ñî•ñ‚ð•K—v‚Æ‚µƒtƒŒ[ƒ€\‘¢‚âî•ñƒwƒbƒ_ [‚Ȃǂ̓Á•ʂȂµ‚‚Ý‚ª•K—v‚Å‚ ‚éB‚±‚̂悤‚ȃR[ƒfƒbƒN‚ÍM—Š«‚ÆŽÀŽžŠÔ«‚Æ“`‘—Œø —¦‚ª“¯Žž‚É—v‹‚³‚ê‚镪–ìi—Ⴆ‚ÎŽY‹Æƒƒ{ƒbƒg‚âæ‚è•¨‚̧ŒäM†‚Ì“`‘—j‚ɂ͗˜—p¢ “ï‚Å‚ ‚Á‚½B @y‚O‚O‚O‚Sz @ã‹L‚̉ۑè‚ÉŠÓ‚ÝA–{”–¾‚ÍAƒf[ƒ^‚Ì“`‘—’PˆÊ‚ª”äŠr“I¬‚³‚A•„†‚Ì‹æØ‚è‚ð’m‚é ‚±‚Æ‚ª—eˆÕ‚ÅA“`‘—Žž‚ÌŒë‚è‚̉e‹¿‚𜋎‚µ‚¤‚éA‚•„†‰»—¦‚̃R[ƒfƒbƒN‚ª“K—p‚³‚ꂽ ’ÊMƒVƒXƒeƒ€A‘—M‘•’uA‚¨‚æ‚ÑŽóM‘•’u‚ð’ñ‹Ÿ‚·‚邱‚Æ‚ð–Ú“I‚Æ‚·‚éB y‰Û‘è‚ð‰ðŒˆ‚·‚邽‚߂̎è’iz @y‚O‚O‚O‚Tz @ã‹L‚Ì]—ˆ‹Zp‚ÌŒ‡“_‚Ì–{Ž¿‚ÍAŒ¾‚¢Š·‚¦‚ê‚Γ`‘——p‚Ì•¶Žš‚ÌŽ‚Âî•ñƒGƒ“ƒgƒƒs[‚ð ‘S‚Šˆ—po—ˆ‚Ä‚¢‚È‚¢‚±‚ƂɋNˆö‚µ‚Ä‚¢‚éB‚»‚Ì‚±‚ƂɊӂÝA–{”–¾‚Å‚ÍAŒë‚è’ù³•„† ‰»‚Æ•¶Žš‰»‚ð‡‚킹‚Äs‚¤‚±‚ÆA‚‚܂èˆóŽš‰Â”\‚È•¶ŽšŽí‚Ì‘g‚݇‚킹‚Æ‚µ‚ÄŽÀŒ»‚Å‚«‚é ”‚Ì•\Œ»•û–@‚ÆA‚»‚Ìî•ñƒGƒ“ƒgƒƒs[‚ª‘傯‚È‚é‘g‚݇‚킹‚ð‘I‚Ô‚±‚Æ‚Å‰ðŒˆ‚·‚éB @y‚O‚O‚O‚Uz @–{”–¾‚ÌŽÀŽ{Œ`‘Ô‚ÉŒW‚éƒf[ƒ^’ÊMƒVƒXƒeƒ€‚ÍA‘—M‘•’u‚ÆŽóM‘•’u‚Æ‚ð”õ‚¦A‘—M‘• ’u‚©‚çŽóM‘•’u‚ÖAƒfƒWƒ^ƒ‹ƒf[ƒ^‚ðŒë‚è’ù³‰Â”\‚É“`‘—‚·‚éB‘—M‘•’u‚ÍA—\‚ß’è‚ß‚ç ‚ê‚½•¡”‚̃Rƒvƒ‰ƒCƒ€‚Å\¬‚³‚ê‚éƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚ÉŠî‚¢‚ÄA—\‚ß’è‚ß‚ç‚ꂽî•ñƒr ƒbƒg‚̃rƒbƒg”‚ð—L‚·‚éƒfƒWƒ^ƒ‹ƒf[ƒ^‚ɂ‚¢‚ÄAƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚ð\¬‚·‚éƒRƒvƒ‰ƒC ƒ€‚Ì‚»‚ꂼ‚ê‚𜔂Ƃµ‚Ä“¾‚ç‚ê‚é•¡”‚Ìè—]‚Ì‘g‚Å‚ ‚éè—]”Œn‚ðŽZo‚·‚éè—]”ŒnŽZ o•”‚ÆAè—]ŒnŽZo•”‚ªŽZo‚µ‚½è—]”Œn‚Ɋ܂܂ê‚éŒÂX‚Ìè—]‚ðA—\‚ß’è‚ß‚ç‚ꂽ•ÏŠ· ƒ}ƒbƒv‚l‚ÉŠî‚¢‚ÄAˆóü‰Â”\‚È•¶Žš‚Å‚ ‚é•„†•¶Žš‚ɕϊ·‚·‚邱‚Ƃɂæ‚èAè—]”Œn‚ð •„†•¶Žš‚É‚æ‚è\¬‚³‚ê‚é•¶Žš—ñ‚ɕϊ·‚·‚éƒ}ƒbƒsƒ“ƒOˆ—•”‚ÆA‚ð”õ‚¦‚éBŽóM‘•’u‚Í A‘—M‘•’u‚©‚çŽó‚¯Žæ‚Á‚½•¶Žš—ñ‚ðA•ÏŠ·ƒ}ƒbƒv‚ÉŠî‚¢‚Ä‹t•ÏŠ·‚µAè—]”Œn‚𕜌³‚· ‚éƒ}ƒbƒsƒ“ƒO‰ðœ•”‚ÆAè—]”ŒnŽZo•”‚Åè—]”Œn‚ðŽZo‚·‚é‚̂ɗp‚¢‚½‚à‚̂Ɠ¯‚¶—\‚ß ’è‚ß‚ç‚ꂽ•¡”‚̃Rƒvƒ‰ƒCƒ€‚ƃ}ƒbƒsƒ“ƒO‰ðœ•”‚ª•œŒ³‚µ‚½è—]”Œn‚ƂɊî‚¢‚ÄAƒfƒW ƒ^ƒ‹ƒf[ƒ^‚𕜆‚·‚éƒf[ƒ^•œ†•”‚Æ‚ð”õ‚¦‚éBƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚ÍA‚Ž{‚’i‚½‚¾‚µ‚’ †‚PjŒÂ‚̃Rƒvƒ‰ƒCƒ€‚É‚æ‚è\¬‚³‚êAî•ñƒrƒbƒg‚̃rƒbƒg”‚Å•\‚³‚ê‚éƒfƒWƒ^ƒ‹ƒf[ƒ^ ‚ðAƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚ð\¬‚·‚éƒRƒvƒ‰ƒCƒ€‚Ì‚¤‚¿‰ºˆÊ‚ŽŒÂ‚ÌƒRƒvƒ‰ƒCƒ€‚É‚æ‚éè—]‚Ì‘g ‚É‚æ‚èˆêˆÓ‚É•\‚·‚±‚Æ‚ª‚Å‚«‚邿‚¤‚É’è‚ß‚ç‚ê‚éB @y‚O‚O‚O‚Vz @–{”–¾‚Å‚ÍAƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚ð\¬‚·‚éƒRƒvƒ‰ƒCƒ€‚Ì‚¤‚¿‰ºˆÊ‚ŽŒÂ‚ÌƒRƒvƒ‰ƒCƒ€‚É‚æ ‚éî•ñƒGƒ“ƒgƒƒs[‚Ì®”•”•ª‚ðî•ñƒrƒbƒg‚Ì“`‘—‚É—˜—p‚µA¬”•”•ª‚ɑГ–‚·‚é—]蕪 ‚ðŽåî•ñˆÈŠO‚Ìî•ñ‚Ì“`‘—‚É—˜—p‚·‚邯‚æ‚¢B @y‚O‚O‚O‚Wz @–{”–¾‚Å‚ÍA‘—M‘•’u‚©‚çŽóM‘•’u‚ÉA—\‚ß’è‚ß‚ç‚ꂽ•„†ŒêŠÔ‚Ì•ª—£—p‚̃fƒŠƒ~ƒ^•¶ Žš‚ð“`‘—‰Â”\‚É\¬‚³‚êA•ÏŠ·ƒ}ƒbƒv‚ÍAƒfƒŠƒ~ƒ^•¶Žš‚Ì‚PƒrƒbƒgŒë‚è‚É‚È‚é•¶Žš‚𕄆 •¶Žš‚É—p‚¢‚È‚¢‚悤‚É‚·‚邯‚æ‚¢B @y‚O‚O‚O‚Xz @–{”–¾‚ÌŽÀŽ{Œ`‘Ô‚ÉŒW‚é‘—M‘•’u‚ÍA—\‚ß’è‚ß‚ç‚ꂽ•¡”‚̃Rƒvƒ‰ƒCƒ€‚Å\¬‚³‚ê‚éƒR ƒvƒ‰ƒCƒ€ƒZƒbƒg‚ÉŠî‚¢‚ÄA—\‚ß’è‚ß‚ç‚ꂽî•ñƒrƒbƒg‚̃rƒbƒg”‚ð—L‚·‚éƒfƒWƒ^ƒ‹ƒf[ ƒ^‚ɂ‚¢‚ÄAƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚ð\¬‚·‚éƒRƒvƒ‰ƒCƒ€‚Ì‚»‚ꂼ‚ê‚𜔂Ƃµ‚Ä“¾‚ç‚ê‚é•¡ ”‚Ìè—]iˆÈ‰ºAƒVƒ“ƒ{ƒ‹‚ƌĂÔꇂª‚ ‚éj‚Ì‘g‚Å‚ ‚éè—]”Œn‚ðŽZo‚·‚éè—]”ŒnŽZ o•”‚ÆAè—]ŒnŽZo•”‚ªŽZo‚µ‚½è—]”Œn‚Ɋ܂܂ê‚éŒÂX‚Ìè—]‚ðA—\‚ß’è‚ß‚ç‚ꂽ•ÏŠ· ƒ}ƒbƒv‚l‚ÉŠî‚¢‚ÄAˆóü‰Â”\‚È•¶Žš‚Å‚ ‚é•„†•¶Žš‚ɕϊ·‚·‚邱‚Ƃɂæ‚èAè—]”Œn‚ð •„†•¶Žš‚É‚æ‚è\¬‚³‚ê‚é•¶Žš—ñ‚ɕϊ·‚·‚éƒ}ƒbƒsƒ“ƒOˆ—•”‚ÆA‚ð”õ‚¦‚éB @y‚O‚O‚P‚Oz @–{”–¾‚Å‚ÍAƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚ð\¬‚·‚éƒRƒvƒ‰ƒCƒ€‚Ì‚¤‚¿‰ºˆÊ‚ŽŒÂ‚ÌƒRƒvƒ‰ƒCƒ€‚É‚æ ‚éî•ñƒGƒ“ƒgƒƒs[‚Ì®”•”•ª‚ðî•ñƒrƒbƒg‚Ì‘—M‚É—˜—p‚µA¬”•”•ª‚ɑГ–‚·‚é—]蕪 ‚ðŽåî•ñˆÈŠO‚Ìî•ñ‚Ì‘—M‚É—˜—p‚·‚邯‚æ‚¢B @y‚O‚O‚P‚Pz @–{”–¾‚Å‚ÍA‘—M‘•’u‚©‚çŽóM‘•’u‚ÉA—\‚ß’è‚ß‚ç‚ꂽ•„†ŒêŠÔ‚Ì•ª—£—p‚̃fƒŠƒ~ƒ^•¶ Žš‚ð“`‘—‰Â”\‚É\¬‚³‚êA•ÏŠ·ƒ}ƒbƒv‚ÍAƒfƒŠƒ~ƒ^•¶Žš‚Ì‚PƒrƒbƒgŒë‚è‚É‚È‚é•¶Žš‚𕄆 •¶Žš‚É—p‚¢‚È‚¢‚悤‚É‚·‚邯‚æ‚¢B @y‚O‚O‚P‚Qz @–{”–¾‚ÌŽÀŽ{Œ`‘Ô‚ÉŒW‚éŽóM‘•’u‚ÍAã‹L‚̉½‚ê‚©‚Ì‘—M‘•’u‚É‚æ‚è•„†‰»‚³‚ꂽA•„ †•¶Žš‚É‚æ‚è\¬‚³‚ê‚é•¶Žš—ñ‚ðŽóM‚µ‚Ä•œ†‚·‚éBŽóM‘•’u‚ÍA‘—M‘•’u‚©‚çŽó‚¯Žæ‚Á ‚½•¶Žš—ñ‚ðA•ÏŠ·ƒ}ƒbƒv‚ÉŠî‚¢‚Ä‹t•ÏŠ·‚µAè—]”Œn‚𕜌³‚·‚éƒ}ƒbƒsƒ“ƒO‰ðœ•”‚ÆA è—]”ŒnŽZo•”‚Åè—]”Œn‚ðŽZo‚·‚é‚̂ɗp‚¢‚½‚à‚̂Ɠ¯‚¶—\‚ß’è‚ß‚ç‚ꂽ•¡”‚̃Rƒvƒ‰ ƒCƒ€‚ƃ}ƒbƒsƒ“ƒO‰ðœ•”‚ª•œŒ³‚µ‚½è—]”Œn‚ƂɊî‚¢‚ÄAƒfƒWƒ^ƒ‹ƒf[ƒ^‚𕜆‚·‚éƒf [ƒ^•œ†•”‚Æ‚ð”õ‚¦‚éB y}–ʂ̊ȒP‚Èà–¾z @y‚O‚O‚P‚Rz @@y}‚Pzƒf[ƒ^’ÊMƒVƒXƒeƒ€‚P‚Ì\¬‚ðŽ¦‚·ƒuƒƒbƒN}‚Å‚ ‚éB @@y}‚Qz‚V|‚‚‚‰‚”@‚`‚r‚b‚h‚hƒR[ƒh‚Ì•¶ŽšƒR[ƒh•\‚ðŽ¦‚·B @@y}‚Rz•ÏŠ·ƒ}ƒbƒv‚l‚̈ê—á‚ðŽ¦‚·B y”–¾‚ðŽÀŽ{‚·‚邽‚߂̌`‘Ôz @y‚O‚O‚P‚Sz @ˆÈ‰ºA–{”–¾‚ÌŽÀŽ{Œ`‘Ô‚ð}–ʂɊî‚¢‚Äà–¾‚·‚éB‚È‚¨AˆÈ‰º‚Ìà–¾‚Å‚ÍA“¯ˆê‚Ì•” ނɂ͓¯ˆê‚Ì•„†‚ð•t‚µAˆê“xà–¾‚µ‚½•”ނɂ‚¢‚Ă͓K‹X‚»‚Ìà–¾‚ðÈ—ª‚·‚éB‚Ü‚½A ˆÈ‰º‚Ìà–¾‚ł݂͌¢‚É‘f‚È”‚Ì‚±‚Æ‚ðƒRƒvƒ‰ƒCƒ€‚ƌĂÔB @y‚O‚O‚P‚Tz kƒn[ƒhƒEƒFƒA‚ÌŠT—ª\¬l @}‚P‚ÍA–{ŽÀŽ{Œ`‘Ô‚ÉŒW‚éƒf[ƒ^’ÊMƒVƒXƒeƒ€‚P‚Ì\¬‚ðŽ¦‚·ƒuƒƒbƒN}‚Å‚ ‚éB}‚P ‚ÉŽ¦‚·‚悤‚ÉAƒf[ƒ^’ÊMƒVƒXƒeƒ€‚P‚ÍA‘—M‘•’u‚Q‚ÆAŽóM‘•’u‚R‚Æ‚ð”õ‚¦‚éB‘—M‘• ’u‚Q‚ÆŽóM‘•’u‚R‚Æ‚ÍA—Lü‚Ü‚½‚Í–³ü‚Ì’ÊM˜H‚É‚æ‚è’ÊM‰Â”\‚ÉÚ‘±‚³‚ê‚Ä‚¢‚éB @y‚O‚O‚P‚Uz @‘—M‘•’u‚Q‚ÍA‘—Mƒf[ƒ^‚„‚”‚˜‚ðŒë‚è’ù³‰Â”\‚É•„†‰»‚µ‚ÄAŽóM‘•’u‚R‚É‘—M‚·‚é B‘—Mƒf[ƒ^‚„‚”‚˜‚Í‘—M‘•’u‚Q‚Ì“à•”‚Ŷ¬‚³‚ê‚Ä‚à‚æ‚¢‚µAŠO•”‚©‚ç—^‚¦‚ç‚ê‚Ä‚à‚æ ‚¢‚ªA—\‚ß’è‚ß‚ç‚ꂽî•ñƒrƒbƒg”‚ð’PˆÊ‚Æ‚µ‚ÄA•„†‰»‚³‚ê‚éB}‚P‚ÉŽ¦‚·‚悤‚ÉA‘— M‘•’u‚Q‚ÍAè—]”ŒnŽZo•”‚Q‚PAƒ}ƒbƒsƒ“ƒOˆ—•”‚Q‚QA‹y‚Ñ‘—M•”‚Q‚R‚ð”õ‚¦‚éB @y‚O‚O‚P‚Vz @è—]”ŒnŽZo•”‚Q‚P‚ÍA•¡”‚̃Rƒvƒ‰ƒCƒ€‚Ì‚»‚ꂼ‚ê‚ðœ”A‘—Mƒf[ƒ^‚„‚”‚˜‚ð”íœ ”‚Æ‚µ‚Ä“¾‚½AƒRƒvƒ‰ƒCƒ€‚Ì”‚ɉž‚¶‚½”‚Ìè—]‚Ì‘giˆÈ‰ºA‚±‚Ìè—]‚Ì‘g‚ðè—]”Œn‚Æ ‚Æ‚¢‚¤j‚ðŽZo‚·‚éB’†‘lè—]’è— (Chinese remainder theorem) ‚É‚æ‚邯ƒRƒvƒ‰ƒC ƒ€‚̑斢–ž‚̳®”‚˜‚ÍAŠeƒRƒvƒ‰ƒCƒ€‚É‚æ‚éè—]‚Ì‘g‚ňêˆÓ‚É•\‚³‚ê‚éB‚±‚Ì«Ž¿‚ð —˜—p‚µAè—]”ŒnŽZo•”‚Q‚P‚ªŽZo‚·‚éè—]”Œn‚ÍA‘—Mƒf[ƒ^‚„‚”‚˜‚ðˆêˆÓ‚É•\‚·‚±‚Æ ‚ª‚Å‚«‚éBè—]”ŒnŽZo•”‚Q‚P‚Åè—]”Œn‚ðŽZo‚·‚邽‚߂ɗp‚¢‚é•¡”‚̃Rƒvƒ‰ƒCƒ€‚Ì‘g ‚ðAƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚b‚“‚…‚”‚ƌĂÔBƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚b‚“‚…‚”‚Ì‘I‘ð‚ɂ‚¢‚Ă͌ã‚É Úq‚·‚邪AƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚b‚“‚…‚”‚ÍAˆê“x‚É‘—M‚Å‚«‚éî•ñƒrƒbƒg”‚ð•\‚·‚̂ɕK —v‚ȃRƒvƒ‰ƒCƒ€‚æ‚è‚à‘½‚‚̃Rƒvƒ‰ƒCƒ€‚ðŠÜ‚ÝA‚±‚Ìç’·‚ȃRƒvƒ‰ƒCƒ€‚É‚æ‚éè—]‚ðè—] ”Œn‚Ɋ܂߂邱‚ƂŌë‚è’ù³‰Â”\‚È•„†‰»‚ðŽÀŒ»‚·‚éB @y‚O‚O‚P‚Wz @ƒ}ƒbƒsƒ“ƒOˆ—•”‚Q‚Q‚ÍAè—]”ŒnŽZo•”‚Q‚P‚ªŽZo‚µ‚½è—]”Œn‚Ɋ܂܂ê‚éŒÂX‚Ìè —]‚ðA—\‚ß’è‚ß‚ç‚ꂽ•ÏŠ·ƒ}ƒbƒv‚l‚ÉŠî‚¢‚ÄA•„†•¶Žš‚ɕϊ·‚·‚éB•ÏŠ·ƒ}ƒbƒv‚l‚ÍA è—]‚ƈóü‰Â”\‚È•¶Žš‚Æ‚ð‚P‘΂P‚ÉŠ„‚è“–‚Ä‚éB•ÏŠ·ƒ}ƒbƒv‚l‚ɂ‚¢‚Ă͌ã‚ÉÚq‚·‚邪 A•„†•¶Žš‚É‚ÍA—Ⴆ‚Î}‚Q‚ÉŽ¦‚·‚V|‚‚‚‰‚”@‚`‚r‚b‚h‚hƒR[ƒh‚Ȃǂ̕¶ŽšƒR[ƒh•\‚É ‚¨‚¯‚éˆóü‰Â”\‚È•¶Žš‚ð—p‚¢‚邯‚æ‚¢B‘—Mƒf[ƒ^‚„‚”‚˜‚ÍAè—]”ŒnŽZo•”‚Q‚P‚¨‚æ‚Ñ ƒ}ƒbƒsƒ“ƒOˆ—•”‚Q‚Q‚ł̈—‚ðŒo‚ÄAè—]”Œn‚ð•\‚·•¶Žš—ñ‚ɕϊ·‚³‚ê‚éB‚±‚Ì•¶Žš—ñ ‚ÌŒÂX‚Ì•¶Žš‚ÍAƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚b‚“‚…‚”‚Ɋ܂܂ê‚éŒÂX‚̃Rƒvƒ‰ƒCƒ€‚𜔂Ƃµ‚½è —]‚ð•\‚µ‚Ä‚¢‚éB @y‚O‚O‚P‚Xz @‘—M•”‚Q‚R‚ÍA–³ü‚Ü‚½‚Í—Lü‚É‚æ‚éƒf[ƒ^‘—M‚ðŽÀŒ»‚·‚éB‘—M•”‚Q‚R‚ÍAƒ}ƒbƒsƒ“ ƒOˆ—•”‚Q‚Q‚ªo—Í‚·‚é•¶Žš—ñ‚ðA•„†‰»‚³‚ꂽ‘—Mƒf[ƒ^‚„‚”‚ƒ‚‚„‚…‚Æ‚µ‚ÄAŽóM‘• ’u‚R‚É‘—M‚·‚éB @y‚O‚O‚Q‚Oz @ŽóM‘•’u‚R‚ÍA‘—M‘•’u‚Q‚©‚ç‚Ì•„†‰»‚³‚ꂽ‘—Mƒf[ƒ^‚ðŽóM‚µA‚±‚ê‚𕜆‚µ‚ÄA ‘—M‘•’u‚Q‚ª‘—M‚µ‚½Œ³‚̃f[ƒ^‚𓾂éB}‚P‚ÉŽ¦‚·‚悤‚ÉAŽóM‘•’u‚R‚ÍAŽóM•”‚R‚P Aƒ}ƒbƒsƒ“ƒO‰ðœ•”‚R‚QA‹y‚уf[ƒ^•œ†•”‚R‚R‚ð”õ‚¦‚éB @y‚O‚O‚Q‚Pz @ŽóM•”‚R‚PA–³ü‚Ü‚½‚Í—Lü‚É‚æ‚éƒf[ƒ^ŽóM‚ðŽÀŒ»‚·‚éBŽóM•”‚R‚P‚ÍA‘—M•”‚Q‚R ‚©‚ç‘—M‚³‚ê‚é•„†‰»‚³‚ꂽ‘—Mƒf[ƒ^‚ðŽóM‚µAƒ}ƒbƒsƒ“ƒO‰ðœ•”‚R‚Q‚É‹Ÿ‹‹‚·‚éB @y‚O‚O‚Q‚Qz @ŽóM•”‚R‚P‚©‚çƒ}ƒbƒsƒ“ƒO‰ðœ•”‚R‚Q‚É‹Ÿ‹‹‚³‚ê‚é•„†‰»‚³‚ꂽ‘—Mƒf[ƒ^‚ÍA•„†•¶ Žš‚É‚æ‚è\¬‚³‚ꂽ•¶Žš—ñ‚Å‚ ‚éBƒ}ƒbƒsƒ“ƒO‰ðœ•”‚R‚Q‚ÍA‚±‚Ì•¶Žš—ñ‚ðAƒ}ƒbƒsƒ“ƒO ˆ—•”‚Q‚Q‚Å—p‚¢‚é•ÏŠ·ƒ}ƒbƒv‚l‚Æ“¯‚¶ƒ}ƒbƒv‚ð—p‚¢‚Ä‹t•ÏŠ·‚µAè—]”Œn‚𕜌³‚·‚éB ‚·‚Ȃ킿Aƒ}ƒbƒsƒ“ƒO‰ðœ•”‚R‚Q‚ÍA•„†‰»‚³‚ꂽ‘—Mƒf[ƒ^‚Å‚ ‚é•¶Žš—ñ‚ÌŒÂX‚Ì•¶Žš ‚ðA•ÏŠ·ƒ}ƒbƒv‚l‚ð—p‚¢‚Äè—]‚ð•\‚·”‚ɕϊ·‚µAè—]”Œn‚𕜌³‚·‚éBƒ}ƒbƒsƒ“ƒO‰ðœ •”‚R‚Q‚Í•œŒ³‚µ‚½è—]”Œn‚ðƒf[ƒ^•œ†•”‚R‚R‚É‹Ÿ‹‹‚·‚éB @y‚O‚O‚Q‚Rz @ƒf[ƒ^•œ†•”‚R‚R‚ÍAè—]”ŒnŽZo•”‚Q‚P‚Åè—]”Œn‚ðŽZo‚·‚é‚̂ɗp‚¢‚½‚à‚̂Ɠ¯‚¶ ƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚b‚“‚…‚”‚ƃ}ƒbƒsƒ“ƒO‰ðœ•”‚R‚Q‚ª•œŒ³‚µ‚½è—]”Œn‚ƂɊî‚¢‚ÄAŠù ’m‚Ì’†‘lè—]’藂̉ð–@ƒAƒ‹ƒSƒŠƒYƒ€‚É‚æ‚èŽóMƒf[ƒ^‚„‚’‚˜‚ðŽZo‚·‚éB‚±‚̂Ƃ«A ƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚b‚“‚…‚”‚Ìç’·«‚É‚æ‚èAƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚b‚“‚…‚”‚Æè—]”Œn‚ÍAŽó Mƒf[ƒ^‚„‚’‚˜‚ðŽZo‚·‚邽‚߂ɕK—v‚È”‚ð’´‚¦‚éAç’·‚ȃRƒvƒ‰ƒCƒ€‚¨‚æ‚Ñç’·‚Èè—] ‚ðŠÜ‚ñ‚Å‚¢‚éBƒf[ƒ^•œ†•”‚R‚R‚ÍAƒRƒvƒ‰ƒCƒ€‚¨‚æ‚Ñè—]‚ɂ‚¢‚Ä•¡”’Ê‚è‚Ì‘g‚݇‚í ‚¹‚ÅŽóMƒf[ƒ^‚„‚’‚˜‚ðŽZo‚µA•¡”‚ÌŽóMƒf[ƒ^‚„‚’‚˜‚ðŽZo‚·‚éB’ÊM‰ß’ö‚ŃGƒ‰[ ‚ª¶‚¶‚Ä‚¢‚È‚¯‚ê‚΃f[ƒ^•œ†•”‚R‚R‚ÅŽZo‚³‚ê‚é‚·‚ׂĂ̎óMƒf[ƒ^‚„‚’‚˜‚Í“¯‚¶’l‚Æ ‚È‚é‚Ì‚ÅA‚»‚Ì’l‚ðÅI“I‚ÈŽóMƒf[ƒ^‚„‚’‚˜‚Æ‚·‚éB @y‚O‚O‚Q‚Sz @“`‘—’†‚ÉA‹–—e‰Â”\‚ȃrƒbƒg”‚̈ȉº‚̃Gƒ‰[‚ª¶‚¶‚Ä‚¢‚½ê‡‚É‚ÍAƒGƒ‰[‚̉e‹¿‚ð Žó‚¯‚Ä‚¢‚È‚¢è—]‚݂̂ð‘g‚݇‚킹‚ÄŽZo‚³‚ê‚éŽóMƒf[ƒ^‚„‚’‚˜‚Í‹¤’ʂ̒l‚ƂȂèAƒG ƒ‰[‚̉e‹¿‚ðŽó‚¯‚½è—]‚ðŠÜ‚Þè—]‚Ì‘g‚݇‚킹‚É‚æ‚èŽZo‚³‚ê‚éŽóMƒf[ƒ^‚„‚’‚˜‚ÍA ‘¼‚Ì‘g‚݇‚킹‚©‚çŽZo‚³‚ê‚éŽóMƒf[ƒ^‚„‚’‚˜‚Ƃ͈قȂé’l‚ƂȂéB‚µ‚½‚ª‚Á‚ÄA‘½” Œˆ‚É‚æ‚èAƒGƒ‰[‚̉e‹¿‚ðŽó‚¯‚Ä‚¢‚È‚¢è—]‚݂̂ð‘g‚݇‚킹‚ÄŽZo‚³‚ê‚éŽóMƒf[ƒ^‚„ ‚’‚˜‚ðAÅI“I‚ÈŽóMƒf[ƒ^‚„‚’‚˜‚Æ‚·‚éB @y‚O‚O‚Q‚Tz @“`‘—’†‚ÉA‹–—e‰Â”\‚ȃrƒbƒg”‚ð’´‚¦‚éƒGƒ‰[‚ª¶‚¶‚Ä‚¢‚½ê‡‚É‚ÍAƒf[ƒ^•œ†•”‚R ‚R‚ÅŽZo‚³‚ê‚éŽóMƒf[ƒ^‚„‚’‚˜‚Í‚·‚ׂČ݂¢‚ɈقȂé’l‚ƂȂèA‘½”Œˆ‚É‚æ‚èŽóMƒf[ ƒ^‚„‚’‚˜‚𓾂邱‚Æ‚ª‚Å‚«‚È‚¢B‚±‚Ìê‡AŽóM‘•’u‚R‚ÍA‘—M‘•’u‚Q‚Ƀf[ƒ^‚ÌÄ‘—M ‚ð—v‹‚·‚é“™A³‚µ‚¢ƒf[ƒ^‚ðŽóM‚·‚邽‚߂̎–Œãˆ—‚ðs‚¤B @y‚O‚O‚Q‚Uz @‚±‚̂悤‚È\¬‚É‚æ‚èA–{ŽÀŽ{Œ`‘Ô‚ÉŒW‚éƒf[ƒ^’ÊMƒVƒXƒeƒ€‚P‚ÍA‘—M‘•’u‚Q‚ÆŽóM ‘•’u‚R‚Ƃ̊ԂÅAŒë‚è’ù³‰Â”\‚È’ÊM‚ðŽÀŒ»‚·‚éB @y‚O‚O‚Q‚Vz @ãq‚̂悤‚É‘—M‘•’u‚Q‚ÆŽóM‘•’u‚R‚É‚æ‚è\¬‚³‚ê‚éƒf[ƒ^’ÊMƒVƒXƒeƒ€‚P‚É‚¨‚¢‚Ä A‘—M‘•’u‚Q‚ÆŽóM‘•’u‚R‚Í‹¤’ʂ̕ϊ·ƒ}ƒbƒv‚l‚ƃRƒvƒ‰ƒCƒ€ƒZƒbƒg‚b‚“‚…‚”‚ðŽ‚¿A‚» ‚ꂼ‚ê‚É‚¨‚¯‚鈗‚É—˜—p‚·‚éBˆÈ‰º‚Åà–¾‚·‚é•ÏŠ·ƒ}ƒbƒv‚l‚ƃRƒvƒ‰ƒCƒ€ƒZƒbƒg‚b‚“‚… ‚”‚ð—˜—p‚·‚邱‚Æ‚ÅA–{”–¾‚̃f[ƒ^’ÊMƒVƒXƒeƒ€‚Ìì—pŒø‰Ê‚ªŽÀŒ»‚³‚ê‚éB @y‚O‚O‚Q‚Wz k•ÏŠ·ƒ}ƒbƒvl @•ÏŠ·ƒ}ƒbƒv‚l‚ÍA‘—Mƒf[ƒ^‚„‚”‚˜‚ð”휔AƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚b‚“‚…‚”‚É‘®‚·‚éŠeƒR ƒvƒ‰ƒCƒ€‚b‚𜔂Ƃµ‚½‚Æ‚«‚Ìè—]‚ðA•„†•¶Žš‚ɕϊ·‚·‚邽‚߂̕ϊ·ƒ}ƒbƒv‚Å‚ ‚èAè —]‚Æ•¶Žš‚Æ‚ª‚P‘΂P‚ÉŠ„‚è“–‚Ä‚ç‚ê‚Ä‚¢‚éB‚±‚̕ϊ·ƒ}ƒbƒv‚l‚É—p‚¢‚é•„†•¶Žš‚É‚ÍA‚V |‚‚‚‰‚”@‚`‚r‚b‚h‚hƒR[ƒh‚Ȃǂ̕¶ŽšƒR[ƒh•\‚É‚¨‚¯‚éˆóü‰Â”\‚È•¶Žš‚ð—p‚¢‚邱‚Æ‚ª ‚Å‚«‚éB}‚Q‚ÉŽ¦‚µ‚½‚V|‚‚‚‰‚”@‚`‚r‚b‚h‚hƒR[ƒh‚Ì•¶ŽšƒR[ƒh•\‚É‚¨‚¢‚ÄAˆóü‰Â”\ ‚È•¶Žš‚ÍAu!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd efghijklmnopqrstuvwxyz{|}~v‚Ì‚X‚S•¶Žši}‚Q‚É‚¨‚¢‚ÄA–ÔŠ|‚¯‚ª•t‚³‚ê‚Ä‚¢‚È‚¢•¶Žš j‚Å‚ ‚éB‚µ‚½‚ª‚Á‚ÄA•„†•¶Žš‚Æ‚µ‚Ä‚V|‚‚‚‰‚”@‚`‚r‚b‚h‚hƒR[ƒh‚̈óü‰Â”\‚È•¶Žš ‚ð—p‚¢‚éꇂɃRƒvƒ‰ƒCƒ€ƒZƒbƒg‚b‚“‚…‚”‚Ɋ܂܂ê‚éÅ‘å‚̃Rƒvƒ‰ƒCƒ€‚b‚Ì’l‚Í‚X‚S‚Æ‚È ‚éBè—]‚Æ•¶Žš‚ÌŠ„‚è“–‚Ă͔CˆÓ‚Å‚ ‚邪A“Á‚É’f‚è‚̂Ȃ¢ŒÀ‚èAˆóü‰Â”\‚È‚`‚r‚b‚h‚h ƒR[ƒh‚Ì’l‚ª¬‚³‚¢•û‚©‚燂Éè—]‚ð•\‚·”‚ðŠ„‚è“–‚Ă邯‚æ‚¢B‚È‚¨A“–‘R‚Ì‚±‚ƂȂª ‚ç‚V|‚‚‚‰‚”@‚`‚r‚b‚h‚hƒR[ƒhˆÈŠO‚Ì•¶ŽšƒR[ƒh‚ð—˜—p‚·‚邱‚Æ‚à‰Â”\‚Å‚ ‚邪AˆÈ‰º ‚Ìà–¾‚Å‚ÍA‚V|‚‚‚‰‚”@‚`‚r‚b‚h‚hƒR[ƒh‚̈óü‰Â”\‚È•¶Žš‚ð—p‚¢‚éꇂð—á‚Éà–¾‚· ‚éB’P‚É•¶ŽšƒR[ƒh•\‚ÆÌ‚·‚éꇂɂÍA‚V|‚‚‚‰‚”@‚`‚r‚b‚h‚hƒR[ƒh‚Ȃǂ̕¶ŽšƒR[ ƒh•\‚ðŽw‚·‚à‚̂Ɨ‰ð‚³‚ꂽ‚¢B @y‚O‚O‚Q‚Xz @–{ŽÀŽ{Œ`‘Ԃ̃f[ƒ^’ÊMƒVƒXƒeƒ€‚P‚Å‚ÍA•ÏŠ·ƒ}ƒbƒv‚l‚É‚æ‚èAÅ‘åŒÀ‚̈óü‰Â”\‚È•¶ Žš‚ð—p‚¢‚Ä•„†‰»‚Æ•¶Žš‰»‚ðˆê“x‚És‚¤‚±‚Ƃɂæ‚è‚a‚b‚g•„†‚Ȃǂ̃uƒƒbƒN•„†‚ð•¶Žš ‰»‚µ‚½‚à‚̂Ɣä‚×—ÇD‚È•„†‰»—¦‚𓾂邱‚Æ‚ª‚Å‚«‚éB•ÏŠ·ƒ}ƒbƒv‚l‚ª•„†•¶Žš‚Æ‚µ‚Ĉó ü‰Â”\‚È•¶Žš‚ð—p‚¢‚邱‚Ƃɂæ‚èA‘—Mƒf[ƒ^‚̃ƒMƒ“ƒO‚â‘—Mƒf[ƒ^‚̃[ƒ‹‚Ö‚Ì“Y•t ‚ª—eˆÕ‚Å‚ ‚éB @y‚O‚O‚R‚Oz kƒfƒŠƒ~ƒ^‚É‚æ‚é•„†•¶Žš‚̧ŒÀl @ãq‚Ì’Ê‚èA•„†•¶Žš‚Æ‚µ‚Ä—˜—p‚Å‚«‚é•¶Žš‚Ì”‚É‚æ‚èƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚b‚“‚…‚”‚ÉŠÜ ‚Ü‚ê‚éÅ‘å‚̃Rƒvƒ‰ƒCƒ€‚b‚Ì’l‚ª‹K’肳‚ê‚邪A–{”–¾‚ÉŒW‚é’ÊMƒVƒXƒeƒ€‚Ì’ÊM•û–@‚Í ƒuƒƒbƒN•„†‚̈êŽí‚Å‚ ‚é‚Ì‚ÅA•„†ŒêŠÔ‚𕪗£‚·‚éƒfƒŠƒ~ƒ^‚ƌĂ΂ê‚é§ŒäƒR[ƒh‚ª•K —v‚Èꇂª‚ ‚éB‚»‚±‚ÅA•¶ŽšƒR[ƒh•\‚É‚¨‚¯‚é”CˆÓ‚Ì‚P•¶Žš‚ðƒfƒŠƒ~ƒ^‚ð•\‚·•¶Žš‚Æ‚µ ‚Ĉµ‚¤‚Ƃ悢BƒfƒŠƒ~ƒ^‚ð•\‚·•¶Žš‚͈óü‰Â”\‚È•¶ŽšˆÈŠO‚Ì•¶Žši§Œä•¶Žš“™j‚Æ‚µ‚Ä‚à ‚æ‚¢B‚±‚̂Ƃ«AƒfƒŠƒ~ƒ^‚É‚àŒë‚è‚ɑ΂·‚é‘Ï«‚ðŽ‚½‚¹‚é‚ׂAƒfƒŠƒ~ƒ^‚ðŠ„‚è“–‚Ä‚é •¶Žš‚̃R[ƒh‚ɑ΂µ‚Pƒrƒbƒg‚ÌŒë‚肪¶‚¶‚½ƒR[ƒh‚ɑΉž‚·‚é•¶Žš‚ɂ‚¢‚Ä‚Íè—]‚ðŠ„‚è “–‚ĂȂ¢‚悤‚É‚·‚邯‚æ‚¢B‚·‚Ȃ킿AƒfƒŠƒ~ƒ^‚É•¶ŽšƒR[ƒh‚ðŠ„‚è“–‚Ä‚ç‚ê‚邱‚Æ‚É‚æ ‚èAƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚b‚“‚…‚”‚Ɋ܂܂ê‚éÅ‘å‚̃Rƒvƒ‰ƒCƒ€‚b‚Ì’l‚ÍAƒfƒŠƒ~ƒ^‚ð—p‚¢‚È ‚¢ê‡‚Æ”äŠr‚µ‚ÄŒ¸‚·‚邱‚Æ‚ª‚ ‚éB @y‚O‚O‚R‚Pz @—Ⴆ‚ÎA‚`‚r‚b‚h‚hƒR[ƒhi}‚Qj‚ł̉üs•¶Žš‚Ì‚k‚ei‚O‚˜‚O‚j‚ðƒfƒŠƒ~ƒ^‚µ‚Ä—p ‚¢‚éꇂðl‚¦‚éB•¶ŽšƒR[ƒh•\‚É‚¨‚¢‚Ä‚k‚ei‚O‚˜‚O‚j‚ª‚PƒrƒbƒgŒë‚Á‚½ƒR[ƒh‚ɑΠ‰ž‚·‚é•¶Žš‚ÍA‚u‚si‚O‚˜‚O‚‚jA‚a‚ri‚O‚˜‚O‚WjA‚r‚ni‚O‚˜‚O‚…jA‚r‚s‚wi‚O‚˜ ‚O‚QjA‚r‚t‚ai‚O‚˜‚P‚jA–i‚O‚˜‚Q‚jA‚ii‚O‚˜‚S‚j‚Ì‚V•¶Žš‚Å‚ ‚邪A‚±‚ê ‚ç‚Ì‚¤‚¿‚ňóü‰Â”\‚È•¶Žš‚Í–i‚O‚˜‚Q‚j‚Æ‚ii‚O‚˜‚S‚j‚Ì‚Q•¶Žš‚Å‚ ‚éB‚»‚±‚ÅA ‚k‚ei‚O‚˜‚O‚j‚ðƒfƒŠƒ~ƒ^‚µ‚Ä—p‚¢‚éꇂɂÍA–i‚O‚˜‚Q‚j‚Æ‚ii‚O‚˜‚S‚j‚Éè —]‚ðŠ„‚è“–‚ĂȂ¢‚悤‚É‚·‚邱‚Æ‚ÅAƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚b‚“‚…‚”‚Ɋ܂܂ê‚éÅ‘å‚̃Rƒvƒ‰ ƒCƒ€‚b‚Ì’l‚ª‚X‚Q‚ɧŒÀ‚³‚ê‚‚ÂAƒfƒŠƒ~ƒ^‚ɑ΂µ‚Ä‚Pƒrƒbƒg‚ÌŒë‚è‘Ï«‚ðŽ‚½‚¹‚邱‚Æ ‚ª‚Å‚«‚éB}‚R‚Í‚±‚̂悤‚ɃfƒŠƒ~ƒ^‚ɑ΂µ‚ÄŒë‚è‘Ï«‚ðŽ‚½‚¹‚½‚Æ‚«‚̕ϊ·ƒ}ƒbƒv‚l‚Ì ˆê—á‚ðŽ¦‚µ‚Ä‚¢‚éB @y‚O‚O‚R‚Qz @ˆÈã‚Åà–¾‚µ‚½‚悤‚ÉA•ÏŠ·ƒ}ƒbƒv‚l‚É‚¨‚¯‚éè—]‚ɑ΂·‚é•¶Žš‚ÌŠ„“–‚ÉŽ©—R“x‚ª‚ ‚é ‚½‚ßA‚PƒrƒbƒgŒë‚è’ù³•t‚«ƒfƒŠƒ~ƒ^‚Ì—˜—p‚à‰Â”\‚ƂȂèAƒfƒŠƒ~ƒ^‚Ì‚½‚߂ɓÁ•ʂȓ¯Šú ƒ[ƒh‚ð•K—v‚Æ‚µ‚È‚¢B @y‚O‚O‚R‚Rz @ƒfƒŠƒ~ƒ^‚Ì‚Vƒrƒbƒg’†‚Pƒrƒbƒg‚ÌŒë‚è’ù³‚É‚æ‚éŒë‚è—¦‚̉ü‘P‚Ì’ö“x‚ÍA‚V•¶Žš’†‚P•¶ ŽšA‚ ‚é‚¢‚Í‚VƒVƒ“ƒ{ƒ‹’†‚PƒVƒ“ƒ{ƒ‹‚ÌŒë‚è’ù³‚É‚æ‚é‚à‚̂Ɠ¯‚¶ƒI[ƒ_[‚Å‚ ‚é‚̂Ŗ{ ”–¾‚ÉŒW‚é’ÊMƒVƒXƒeƒ€‚Æ‚µ‚Ă͌ë‚è’ù³”\—͂̃oƒ‰ƒ“ƒX‚ª‚æ‚¢B @y‚O‚O‚R‚Sz k‚»‚Ì‘¼‚Ì•„†•¶Žš‚̧ŒÀl @ãq‚Ì’Ê‚èA‚`‚r‚b‚h‚hƒR[ƒh‚ł̉üs•¶Žš‚Ì‚k‚ei‚O‚˜‚O‚j‚ðƒfƒŠƒ~ƒ^‚µ‚Ä—p‚¢‚é ê‡A•„†•¶Žš‚Í‚X‚Q‚ɧŒÀ‚³‚ê‚邪A‘¼‚Ì”CˆÓ‚Ì•¶Žš‚𕄆•¶Žš‚Æ‚µ‚Ä—˜—p‚µ‚È‚¢‚悤 ‚É‚·‚邱‚Æ‚à‚Å‚«‚éB—Ⴆ‚ÎAƒRƒ“ƒ}iCj‚𕄆•¶Žš‚Æ‚µ‚Ä—˜—p‚µ‚È‚¢‚悤‚É‚µ‚Ä‚à‚æ ‚¢B‚±‚Ìê‡A•„†•¶Žš‚Í‚³‚ç‚É‚P‚ÂŒ¸‚µA‚X‚P‚ɧŒÀ‚³‚ê‚邪Aè—]”Œn‚ð•ÏŠ·ƒ}ƒb ƒv‚l‚É‚æ‚è•„†•¶Žš‚Ì”z—ñ‚Æ‚µ‚Ä‚ ‚ç‚킵‚½•„†Œê‚ð‚b‚r‚u(ƒRƒ“ƒ}•ª—£ƒeƒLƒXƒg)Œ`Ž®‚Å •Û‘¶‚·‚邯‚¢‚Á‚½—˜—p–@‚ª‘z’肳‚ê‚éꇂɂÍA•„†Œê’†‚̃Rƒ“ƒ}‚ª•„†Œê‚Ì‹æØ‚è‚ð•\ ‚·‚à‚̂Ƃµ‚ÄŒë”F‚³‚ê‚邱‚Æ‚ð–h‚®‚±‚Æ‚ª‚Å‚«‚éB @y‚O‚O‚R‚Tz kƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚Ì‘I‘ðl @’†‘lè—]’è—(Chinese remainder theorem)‚É‚æ‚邯³®”‚˜‚ÍAŽ®i‚Pj‚ð–ž‚½‚· ŒÝ‚¢‚É‘f‚È”iƒRƒvƒ‰ƒCƒ€jp 1 cp k ‚Ìè—]‚Ì‘giè—]”Œnj‚ňêˆÓ‚É•\‚³‚ê‚éB @@y”‚Pz@‚‚܂èAƒRƒvƒ‰ƒCƒ€‚Ì‘g‚ðŒˆ‚ß‚ê‚ÎA‚»‚ê‚ç‚Ì”‚̑斢–ž‚̳®”‚Å•\‚³‚ê‚éî•ñ‚ð Aè—]”Œn‚É‚æ‚è•\‚·‚±‚Æ‚ª‰Â”\‚ƂȂéB @y‚O‚O‚R‚Uz @ƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚b‚“‚…‚”‚É‚ÍA•ÏŠ·ƒ}ƒbƒv‚l‚Å—p‚¢‚邱‚Ƃ̂ł«‚é•„†•¶Žš‚ÌŽí—ÞˆÈ ‰º‚Å‚ ‚èAŠŽ‚ÂAŒÝ‚¢‚É‘f‚È”‚Ì‘g‚ª—p‚¢‚ç‚ê‚éB—Ⴆ‚ÎA•ÏŠ·ƒ}ƒbƒv‚l‚Æ‚µ‚ÄAã‹L‚Ì —á‚̂悤‚É‚X‚SŽí‚̈óü‰Â”\‚È•¶Žš‚ðŠÜ‚Þ‚à‚Ì‚ð—p‚¢‚éê‡A‚X‚SˆÈ‰º‚Ì”‚Å\¬‚³‚ê‚é ŒÝ‚¢‚É‘f‚È”‚Ì‘g‚ð—p‚¢‚邱‚Æ‚ª‚Å‚«‚éB‘f”“¯Žm‚Í‚à‚¿‚ë‚ñŒÝ‚¢‚É‘f‚Å‚ ‚邪A‡¬” ‚Å‚à‚»‚Ì‘fˆö”‚ªd•¡‚µ‚È‚¯‚ê‚ÎAŒÝ‚¢‚É‘f‚ƂȂ肤‚éBˆÈ‰º‚ÉA‚X‚SˆÈ‰º‚Ì”‚Å\¬‚³ ‚ê‚éŒÝ‚¢‚É‘f‚È”‚Ì‘g‚Ì—á‚ðŽ¦‚·Bޝ•ʂ̂½‚߂Ɍ݂¢‚Ì‘f‚È”‚Ì‘g’†‚ÌÅ‘å‚Ì—v‘f‚ð‚‚Å •\‚·‚à‚̂ƂµA‚ˆÈ‰º‚݂̌¢‚É‘f‚È”‚Ì‘g‚ð‚b‚‚‚’‚‰‚‚…‚“Q‚i—Ⴆ‚ÎAÅ‘å‚Ì—v‘f ‚ª‚X‚S‚Å‚ ‚ê‚‚‚b‚‚‚’‚‰‚‚…‚“Q‚X‚Sj‚Æ•\‹L‚·‚é‚à‚̂Ƃ·‚éB @y‚O‚O‚R‚Vz Coprimes_94 = {94, 93, 91, 89, 85, 83, 79, 73, 71, 67, 61, 59, 53, 43, 41, 37, 2 9, 23, 19, 11} Coprimes_93 = {93, 92, 91, 89, 85, 83, 79, 73, 71, 67, 61, 59, 53, 47, 43, 41, 3 7, 29, 19, 11} Coprimes_92 = {92, 91, 89, 87, 85, 83, 79, 73, 71, 67, 61, 59, 53, 47, 43, 41, 3 7, 31, 19, 11} Coprimes_91 = {91, 89, 88, 87, 85, 83, 79, 73, 71, 67, 61, 59, 53, 47, 43, 41, 3 7, 31, 23, 19} Coprimes_90 = {90, 89, 85, 83, 79, 73, 71, 67, 61, 59, 53, 47, 43, 41, 37, 31, 2 9, 23, 19, 17, 13, 11} Coprimes_89 = {89, 88, 87, 85, 83, 79, 73, 71, 67, 61, 59, 53, 49, 47, 43, 41, 3 7, 31, 23, 19, 13} @y‚O‚O‚R‚Wz @—Ⴆ‚ÎA‚b‚‚‚’‚‰‚‚…‚“Q‚X‚Q’†‚ÌãˆÊ‚RŒÂ‚̃Rƒvƒ‰ƒCƒ€i‚X‚QC‚X‚PC‚W‚Xj‚É‚æ‚é è—]”Œn‚ð—p‚¢‚ê‚ÎA‚X‚Q~‚X‚P~‚W‚X‚V‚S‚T‚P‚O‚W–¢–ž‚̳®”‚ð•\Œ»‚Å‚«‚éB @y‚O‚O‚R‚Xz @–{ŽÀŽ{Œ`‘Ԃ̃f[ƒ^’ÊMƒVƒXƒeƒ€‚P‚Å‚ÍA‘—Mƒf[ƒ^‚„‚”‚˜‚ðAƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚b‚“ ‚…‚”‚ÌŠe—v‘f‚ÅŠ„‚Á‚½‚Æ‚«‚Ìè—]‚Ì‘g‚Å‚ ‚éè—]”Œn‚É‚æ‚è•\‚·‚ªAƒRƒvƒ‰ƒCƒ€‚Ì‘g‚Å‚ ‚éƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚b‚“‚…‚”‚Éç’·«‚ðŽ‚½‚¹‚邱‚Æ‚ÅAŒë‚è’ù³‚ð‰Â”\‚Æ‚·‚éB‚·‚È‚í ‚¿AƒRƒvƒ‰ƒCƒ€‚ ‚P c‚ ‚‹ ‚Ìè—]‚Ì‘giè—]”Œnj‚É‚æ‚莮i‚Pj‚ð–ž‚½‚·³®”‚˜‚ð•\ Œ»‚·‚éê‡A‚Q‚‚݂̌¢‚É‘f‚È”‚ ‚‹{‚P A‚ ‚‹{‚Q i‚½‚¾‚µA‚ ‚‹ ƒ‚ ‚‹{‚P ƒ‚ ‚‹{ ‚Q j‚ð’ljÁ‚µ‚Ä‚˜‚ð‚‹{‚QŒÂ‚Ìè—]‚Å•\‚·‚悤‚Éç’·«‚ðŽ‚½‚¹‚邯A‚P‚‚Ìè—]‚ÉŒë‚è ‚ª‚ ‚Á‚½ê‡‚ÉA‚‹{‚QŒÂ’†‚Ì‚‹ŒÂ‚Ìè—]‚©‚ç‹tŽZ‚³‚꓾‚é ‚‹{‚Q ‚b ‚‹ ŒÂ‚̳®”‚Ì‚¤‚¿ ‚‹{‚P ‚b ‚‹|‚P ŒÂ‚݂͌¢‚ɈقȂé‚à‚̂ƂȂ邪 ‚‹{‚P ‚b ‚‹ ŒÂ‚Í“¯ˆê‚ƂȂ邽‚ß‘½”Œˆ‚É‚æ ‚è‚PƒVƒ“ƒ{ƒ‹‚ÌŒë‚è’ù³‚ª‰Â”\‚ƂȂéB @y‚O‚O‚S‚Oz @‚æ‚葽‚‚Ì‘½”Œˆ”»’肪o—ˆ‚邿‚¤‚Éã‹L‚’‚ð‘‚µ‚Äç’·“x‚ð‘‰Á‚·‚ê‚΂QƒVƒ“ƒ{ƒ‹ˆÈ ã‚ÌŒë‚è‚Ì’ù³‚à‰Â”\‚Å‚ ‚éB‚Ü‚½A‚’‚P‚Æ‚µ‚½ê‡‚É‚ÍAŒë‚è‚ÌŒŸo‚ª‰Â”\‚Å‚ ‚é‚à ‚Ì‚ÌA’ù³‚͂ł«‚È‚¢B‚’‚P‚Æ‚µ‚ÄAŒë‚肪ŒŸo‚³‚ꂽê‡AŽóM‘•’u‚R‚Í‘—M‘•’u‚Q ‚É‘—Mƒf[ƒ^‚„‚”‚˜‚ÌÄ‘—‚𑣂·‚悤‚É‚·‚邯‚æ‚¢B @y‚O‚O‚S‚Pz @ˆÈ‰ºA‚ ‚é”i‘—M‚·‚éƒf[ƒ^j‚ð‚ŽŒÂ‚ÌƒRƒvƒ‰ƒCƒ€‚𜔂Ƃ·‚éè—]‚Å•\‚·‘ÌŒn‚ð‚Ž ŒÂ‚̃Rƒvƒ‰ƒCƒ€‚É‚æ‚éè—]”Œn‚ƌĂԂ±‚ƂƂ·‚éB‚»‚µ‚ÄA‚ŽŒÂ‚ÌƒRƒvƒ‰ƒCƒ€‚ÉA‚»‚ê‚ç ‚æ‚è‘å‚«‚¢‚’i‚P…‚’jŒÂˆÈã‚̃Rƒvƒ‰ƒCƒ€‚ð’ljÁ‚µ‚ÄA‚Ž{‚’ŒÂ‚̃Rƒvƒ‰ƒCƒ€‚Ìè—]‚Å ‚ ‚锂ð•\‚·‘ÌŒn‚ðuç’·‚Èè—]”Œnv‚ƌĂԂ±‚ƂƂ·‚éB–{ŽÀŽ{Œ`‘Ԃ̃f[ƒ^’ÊMƒVƒX ƒeƒ€‚P‚Å‚ÍA‘—Mƒf[ƒ^‚ð‚±‚Ìuç’·‚Èè—]”Œnv‚É‚æ‚è•\‚·B“TŒ^“I‚É‚ÍA‚ŽŒÂ‚ÌƒRƒv ƒ‰ƒCƒ€‚É‚QŒÂ‚Ìç’·‚ȃRƒvƒ‰ƒCƒ€‚ð’ljÁ‚µ‚Äuç’·‚Èè—]”Œnv‚É‚æ‚è‘—Mƒf[ƒ^‚ð•\Œ» ‚·‚éB @y‚O‚O‚S‚Qz @‹ï‘Ì—á‚Æ‚µ‚Ä‚ÍA‚b‚‚‚’‚‰‚‚…‚“Q‚X‚Q’†‚ÌÅãˆÊ‚QŒÂ‚̃Rƒvƒ‰ƒCƒ€i‚X‚QC‚X‚Pj ‚ðç’·‚ȃRƒvƒ‰ƒCƒ€i‚’‚Qj‚Æ‚µA‚»‚ê‚É‘±‚ãˆÊ‚R‚‚̃Rƒvƒ‰ƒCƒ€i‚W‚XC‚W‚VC‚W ‚Tj‚ðç’·‚łȂ¢ƒRƒvƒ‰ƒCƒ€i‚Ž‚Rj‚Æ‚µ‚Ä—p‚¢‚éuç’·‚Èè—]”Œnv‚Æ‚·‚ê‚ÎA‚R‚ ‚̃Rƒvƒ‰ƒCƒ€i‚W‚XC‚W‚VC‚W‚Tj‚Ì‘æ‚Å‚ ‚é‚W‚X~‚W‚V~‚W‚T‚U‚T‚W‚P‚T‚T–¢–ž‚Ì ³®”‚ð•\Œ»‚Å‚«A‚©‚ÂAç’·«‚É‚æ‚è‚PƒVƒ“ƒ{ƒ‹‚ÌŒë‚è’ù³‚ª‰Â”\‚Å‚ ‚éB @y‚O‚O‚S‚Rz @ç’·‚Èè—]”Œn‚Å•\‚·”‚Ìî•ñƒGƒ“ƒgƒƒs[‚ÌŬ’l‚ðl‚¦‚éB—Ⴆ‚ÎA‘O‹L‚Ì‚b‚‚‚’ ‚‰‚‚…‚“Q‚X‚Q’†‚Ì‚Ž{‚’ŒÂ’†‚̉ºˆÊ‚ŽŒÂ‚Ì”‚Ì‘g‚Å•\‚µ‚¤‚éç’·‚Èè—]”Œn‚Ì”‚Ìî•ñ ƒGƒ“ƒgƒƒs[‚ÌŬ’l‚ÍA‚¨‚æ‚Ñî•ñƒGƒ“ƒgƒƒs[‚ðŽ©‘R”‚ÉØ‚èŽÌ‚Ä‚½î•ñƒrƒbƒg”‚ÍA ‚’‚QC‚Ž‚ª‚P`‚X‚É‚¨‚¢‚ÄŽŸ‚̂悤‚ɂȂéB @y‚O‚O‚S‚Sz ‚Ž‚P‚̂Ƃ«: ln(89) / ln(2) à 6.47 > 6 bit ‚Ž‚Q‚̂Ƃ«: ln(87 * 89) / ln(2) à 12.91 > 12 bit ‚Ž‚R‚̂Ƃ«: ln(85 * 87 * 89) / ln(2) à 19.32 > 19 bit ‚Ž‚S‚̂Ƃ«: ln(83 * 85 * 87 * 89) / ln(2) à 25.70 > 25 bit ‚Ž‚T‚̂Ƃ«: ln(79 * 83 * 85 * 87 * 89) / ln(2) à 32.00 > 32 bit ‚Ž‚U‚̂Ƃ«: ln(73 * 79 * 83 * 85 * 87 * 89) / ln(2) à 38.19 > 38 bit ‚Ž‚V‚̂Ƃ«: ln(71 * 73 * 79 * 83 * 85 * 87 * 89) / ln(2) à 44.34 > 44 bit ‚Ž‚W‚̂Ƃ«: ln(67 * 71 * 73 * 79 * 83 * 85 * 87 * 89) / ln(2) à 50.41 > 50 bi t ‚Ž‚X‚̂Ƃ«: ln(61 * 67 * 71 * 73 * 79 * 83 * 85 * 87 * 89) / ln(2) à 56.34 > 56 bit ‚Ž‚P‚O‚̂Ƃ«: ln(59 * 61 * 67 * 71 * 73 * 79 * 83 * 85 * 87 * 89) / ln(2) à 6 2.22 > 62 bit ‚Ž‚P‚P‚̂Ƃ«: ln(53 * 59 * 61 * 67 * 71 * 73 * 79 * 83 * 85 * 87 * 89) / ln(2) à 67.95 > 67 bit @y‚O‚O‚S‚Tz @‚È‚¨A‘Oq‚̂悤‚ÉA•„†•¶Žš‚Æ‚µ‚Ä‚V|‚‚‚‰‚”@‚`‚r‚b‚h‚hƒR[ƒh‚Ȃǂ̕¶ŽšƒR[ƒh •\‚É‚¨‚¯‚éˆóü‰Â”\‚È•¶Žš‚ð—p‚¢A‚`‚r‚b‚h‚hƒR[ƒh‚ł̉üs•¶Žš‚Ì‚k‚ei‚O‚˜‚O‚j‚ð ƒfƒŠƒ~ƒ^‚µ‚Ä—p‚¢‚éê‡AƒfƒŠƒ~ƒ^‚ªŒë‚Á‚½ê‡‚Ì•¶Žš‚ðœŠO‚·‚邽‚ß‚Ìç’·“x‚Ì‚½‚ß‚É AˆóŽš‰Â”\‚È•¶Žš”‚æ‚è‚Q‚¬‚³‚¢‚b‚‚‚’‚‰‚‚…‚“Q‚X‚Q‚©‚çƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚b‚“‚… ‚”‚ð\¬‚·‚éƒRƒvƒ‰ƒCƒ€‚b‚ð‘I‘ð‚·‚é‚Ì‚ªD‚Ü‚µ‚¢B @y‚O‚O‚S‚Uz kî•ñƒrƒbƒg‚ƃX[ƒp[ƒf[ƒ^l @ãq‚̂悤‚ÉAƒf[ƒ^‚Ì“`‘—‚É—p‚¢‚éî•ñƒrƒbƒg”‚ÍAç’·‚Èè—]”Œn‚Å•\‚·”‚Ìî•ñ ƒGƒ“ƒgƒƒs[‚ðŽ©‘R”‚ÉØ‚èŽÌ‚Ä‚½ƒrƒbƒg”‚Å‚ ‚邪A–{ŽÀŽ{Œ`‘Ԃ̃f[ƒ^’ÊMƒVƒXƒeƒ€ ‚P‚Å‚ÍAî•ñƒGƒ“ƒgƒƒs[‚̬”•”•ª‚ð—˜—p‚µ‚ÄA—Ⴆ‚ÎA“`‘—æƒAƒhƒŒƒX‚â“`‘—•„†’· ‚âƒnƒbƒVƒ…’l‚ ‚é‚¢‚Í“ú•t‚Ȃǂ̂¢‚í‚ä‚éƒwƒbƒ_[î•ñ‚É‘ã•\‚³‚ê‚é•t‰Á“I‚Èî•ñiˆÈ‰º ‚ł͂±‚Ìî•ñƒGƒ“ƒgƒƒs[‚̬”•”•ª‚ð—˜—p‚µ‚½î•ñ‚ðƒX[ƒp[ƒf[ƒ^‚ƌĂÔj‚ðAƒf[ ƒ^‚Ƃ͋æ•Ê‚µ‚Ä“`‘—‚·‚邱‚Æ‚ª‚Å‚«A‚»‚Ì‚½‚߂ɓÁ•ʂȃtƒŒ[ƒ€\‘¢‚Í•s—v‚Å‚ ‚éBƒX[ ƒp[ƒf[ƒ^‚𕄆‰»‚µ‚½‚à‚Ì‚à’Êí‚̃f[ƒ^‚𕄆‰»‚µ‚½‚à‚̂Ɠ¯‚¶•„†Œê‚Å‚ ‚邽‚ßŒë ‚è’ù³‚à“¯—l‚És‚í‚ê‚éB @y‚O‚O‚S‚Vz @—Ⴆ‚ÎAæq‚Ì‚b‚‚‚’‚‰‚‚…‚“Q‚X‚Q‚É‚¨‚¢‚ĂނVA‚’‚Q‚Æ‚µ‚½ê‡‚Ìî•ñƒGƒ“ ƒgƒƒs[‚Í–ñA‚S‚SD‚R‚Sƒrƒbƒg‚Å‚ ‚é‚̂łS‚Sƒrƒbƒg‚܂łÌî•ñƒrƒbƒgA‚·‚Ȃ킿‚P‚U i”•\‹L‚Å0`0x0fffffffffff‚܂ł̒l‚Ìî•ñƒrƒbƒg‚ðˆµ‚¤‚±‚Æ‚ª‚Å‚«‚邪Aî•ñƒGƒ“ƒg ƒƒs[‚Ì—]蕪‚Æ‚µ‚ÄA•„†‰»‚Å‚«‚é’l‚Æ‚µ‚Ä‚Í0x000000000000‚©‚ç0x1457ce160ea0‚܂Ђł ‚é‚Ì‚ÅA‚±‚Ì0x100000000000`0x1457ce160ea0‚ðƒX[ƒp[ƒf[ƒ^‚Æ‚µ‚ÄŽg—p‚·‚邱‚Æ ‚ª‚Å‚«‚éBƒX[ƒp[ƒf[ƒ^‚ÍA‘—M‘•’u‚Q‚Ì“à•”‚Ŷ¬‚³‚ê‚Ä‚à‚æ‚¢‚µA‘—M‘•’u‚Q‚ÉŠO •”‚©‚ç’ñ‹Ÿ‚³‚ê‚Ä‚à‚æ‚¢B‚Ü‚½AŽóM‘•’u‚R‚ÍAŽóM‚µ‚½ƒX[ƒp[ƒf[ƒ^‚ðŽóM‘•’u‚R‚Ì “à•”‚ł̈—‚É—p‚¢‚Ä‚à‚æ‚¢‚µAŽóM‘•’u‚ÌŠO•”‚Éo—Í‚µ‚Ä‚à‚æ‚¢B @y‚O‚O‚S‚Wz @‚±‚̂悤‚ɃX[ƒp[ƒf[ƒ^‚ð“`‘—‚·‚邱‚Ƃɂæ‚èAî•ñƒGƒ“ƒgƒƒs[‚ð—LŒø—˜—p‚·‚邱 ‚Æ‚ª‚Å‚«‚éB–{”–¾‚ÌŽè–@‚ÍAî•ñƒrƒbƒg‚Ì“`‘—‚¾‚¯‚ðl‚¦‚à\•ª‚É‚‚¢•„†‰»—¦‚ðŽÀŒ» ‚·‚邪AƒX[ƒp[ƒf[ƒ^‚ðŠÜ‚߂邯A‚æ‚è‚‚¢•„†‰»—¦‚ðŽÀŒ»‚·‚邱‚Æ‚ª‚Å‚«‚éB @y‚O‚O‚S‚Xz k“®ì—ál @‘±‚¢‚ÄAˆÈã‚Åà–¾‚µ‚½ƒf[ƒ^’ÊMƒVƒXƒeƒ€‚P‚É‚¨‚¢‚ÄA‘—M‘•’u‚Q‚©‚çŽóM‘•’u‚R‚É ƒf[ƒ^‚ð‘—M‚·‚éÛ‚Ì“®ì‚̈ê—á‚ðà–¾‚·‚éB @ˆÈ‰º‚Ì—á‚Å‚ÍA•ÏŠ·ƒ}ƒbƒv‚l‚ÍA•„†•¶Žš‚Æ‚µ‚Ä‚V|‚‚‚‰‚”@‚`‚r‚b‚h‚hƒR[ƒh‚È‚Ç‚Ì •¶ŽšƒR[ƒh•\‚É‚¨‚¯‚éˆóü‰Â”\‚È•¶Žš‚ð—p‚¢A‚`‚r‚b‚h‚hƒR[ƒh‚ł̉üs•¶Žš‚Ì‚k‚ei‚O ‚˜‚O‚j‚ðƒfƒŠƒ~ƒ^‚µ‚Ä—p‚¢‚éB‚Ü‚½AƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚b‚“‚…‚”‚ÍA‚b‚‚‚’‚‰‚‚…‚“ Q‚X‚Q‚É‚¨‚¢‚ĂނUA‚’‚Q‚Æ‚µ‚R‚Wƒrƒbƒg‚Ìî•ñƒrƒbƒg‚ð“`‘—‚·‚éBƒRƒvƒ‰ƒCƒ€ƒZƒb ƒg‚b‚“‚…‚”‚Ɋ܂܂ê‚éƒRƒvƒ‰ƒCƒ€‚b‚ÍA¬‚³‚¢‡‚ÉA‚V‚RC‚V‚XC‚W‚RC‚W‚TC‚W‚VC‚W ‚XC‚X‚PC‚X‚Q‚Ì‚WŒÂ‚Å‚ ‚éB‚±‚ê‚ç‚̃Rƒvƒ‰ƒCƒ€‚b‚É‚æ‚é‘—Mƒf[ƒ^‚Ìè—]‚ð—p‚¢‚Äç ’·‚Èè—]”Œn‚ð•\‚·B @y‚O‚O‚T‚Oz @‘—M‘•’u‚Q‚©‚çŽóM‘•’u‚R‚Ö‚Ì‘—Mƒf[ƒ^‚„‚”‚˜‚ð0x000003dbabefacei‚P‚Oi”‚Å•\ ‚·‚Æ265126083278j‚Æ‚·‚éB‘—M‘•’u‚Q‚Ìè—]”ŒnŽZo•”‚Q‚P‚ÍAƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚b‚“ ‚…‚”‚Ɋ܂܂ê‚éŠeƒRƒvƒ‰ƒCƒ€‚b‚É‚æ‚é‘—Mƒf[ƒ^‚„‚”‚˜‚Ìè—]‚ðŽŸ‚Ì‚æ‚¤‚ÉŽZo‚·‚éB ‚Q‚U‚T‚P‚Q‚U‚O‚W‚R‚Q‚V‚W “ ‚V‚R ‚R‚U ‚Q‚U‚T‚P‚Q‚U‚O‚W‚R‚Q‚V‚W “ ‚V‚X ‚S‚W ‚Q‚U‚T‚P‚Q‚U‚O‚W‚R‚Q‚V‚W “ ‚W‚R ‚W‚P ‚Q‚U‚T‚P‚Q‚U‚O‚W‚R‚Q‚V‚W “ ‚W‚T ‚S‚R ‚Q‚U‚T‚P‚Q‚U‚O‚W‚R‚Q‚V‚W “ ‚W‚V ‚T‚O ‚Q‚U‚T‚P‚Q‚U‚O‚W‚R‚Q‚V‚W “ ‚W‚X ‚W‚R ‚Q‚U‚T‚P‚Q‚U‚O‚W‚R‚Q‚V‚W “ ‚X‚P ‚T‚U ‚Q‚U‚T‚P‚Q‚U‚O‚W‚R‚Q‚V‚W “ ‚X‚Q ‚Q @y‚O‚O‚T‚Pz @‘—M‘•’u‚Q‚̃}ƒbƒsƒ“ƒOˆ—•”‚Q‚Q‚ÍAã‹L‚̂悤‚É‚µ‚Ä‹‚ß‚½è—]‚ð•ÏŠ·ƒ}ƒbƒv‚l‚ð —p‚¢‚ÄŽŸ‚̂悤‚É•„†•¶Žš‚ɕϊ·‚·‚éB ‚R‚U ¨ ‚e ‚S‚W ¨ ‚r ‚W‚P ¨ ‚” ‚S‚R ¨ ‚m ‚T‚O ¨ ‚t ‚W‚R ¨ ‚– ‚T‚U ¨ m ‚Q ¨ ” @y‚O‚O‚T‚Qz @‚·‚Ȃ킿A‘—M‘•’u‚Q‚É‚¨‚¢‚ÄA‘—Mƒf[ƒ^‚„‚”‚˜‚Å‚ ‚é0x3dbabeface‚ÍA‚WŒÂ‚Ì•„† •¶Žš‚É‚æ‚é•¶Žš—ñFStNUv[#‚Å•\‚³‚ê‚éè—]”Œn‚ɕϊ·‚³‚ê‚éB‚±‚Ìè—]”Œn‚ª•„†‰»‚³‚ê ‚½‘—Mƒf[ƒ^txcode‚ƂȂéB @y‚O‚O‚T‚Rz @•„†‰»‚³‚ꂽ‘—Mƒf[ƒ^txcode‚ÍA’ÊM˜H‚ð‰î‚µ‚ÄŽóM‘•’u‚R‚É“`‘—‚³‚ê‚éB“`‘—’†‚É ƒGƒ‰[‚ª¶‚¶‚È‚¢ê‡AŽóM‘•’u‚R‚ªŽóM‚·‚é•„†‰»‚³‚ꂽŽóMƒf[ƒ^rxcode‚Í•„†‰»‚³ ‚ꂽ‘—Mƒf[ƒ^txcode‚Æ“¯‚¶FStNUv[#‚ƂȂéBŽóM‘•’u‚R‚̃}ƒbƒsƒ“ƒO‰ðœ•”‚R‚Q‚ÍA•Ï Š·ƒ}ƒbƒv‚l‚ð—p‚¢‚Äè—]”Œn‚𕜌³‚·‚éB‚·‚Ȃ킿AFStNUv[#‚©‚çA‚WŒÂ‚Ìè—]‚Ì‘g‚Å‚ ‚éè—]”Œno‚R‚UC‚S‚WC‚W‚PC‚S‚RC‚T‚OC‚W‚RC‚T‚UC‚Qp‚ª“¾‚ç‚ê‚éBŽóM‘•’u‚R ‚̃f[ƒ^•œ†•”‚R‚R‚ÍAè—]”Œn‚Ì’†‚Ì‚U‚‚Ìè—]‚¨‚æ‚Ñè—]‚ɑΉž‚·‚éƒRƒvƒ‰ƒCƒ€‚b‚ð —p‚¢‚ÄA’†‘lè—]’è—‚É‚æ‚è‘—Mƒf[ƒ^‚𕜆‚·‚éB—Ⴆ‚ÎAƒRƒvƒ‰ƒCƒ€ƒZƒbƒg‚b‚“‚… ‚”o‚V‚RC‚V‚XC‚W‚RC‚W‚TC‚W‚VC‚W‚XC‚X‚PC‚X‚Qp‚Ì‚¤‚¿A—×Ú‚·‚é‚Q‚‚̃Rƒvƒ‰ ƒCƒ€i‚Ü‚½‚Í—¼’[‚̃Rƒvƒ‰ƒCƒ€j‚ð•sŽg—p‚Æ‚µ‚ÄA‰º‹L‚Ì‚W’Ê‚è‚̃Rƒvƒ‰ƒCƒ€‚Ì‘g‚݇‚í ‚¹‚Å•œ†‚ðs‚¤‚Ƃ悢B o‚W‚RC‚W‚TC‚W‚VC‚W‚XC‚X‚PC‚X‚Qp o‚V‚RC‚W‚TC‚W‚VC‚W‚XC‚X‚PC‚X‚Qp o‚V‚RC‚V‚XC‚W‚VC‚W‚XC‚X‚PC‚X‚Qp o‚V‚RC‚V‚XC‚W‚RC‚W‚XC‚X‚PC‚X‚Qp o‚V‚RC‚V‚XC‚W‚RC‚W‚TC‚X‚PC‚X‚Qp o‚V‚RC‚V‚XC‚W‚RC‚W‚TC‚W‚VC‚X‚Qp o‚V‚RC‚V‚XC‚W‚RC‚W‚TC‚W‚VC‚W‚Xp o‚V‚XC‚W‚RC‚W‚TC‚W‚VC‚W‚XC‚X‚Pp @y‚O‚O‚T‚Sz @‚±‚̂悤‚É•œ†‚É—p‚¢‚éè—]‚Ì‘g‚݇‚킹‚É‚æ‚èA•¡”’Ê‚è‚Ì•œ†‚ª‰Â”\‚Å‚ ‚邪AƒG ƒ‰[‚ª–³‚¢ê‡‚É‚ÍA‚Ç‚Ìè—]‚Ì‘g‚݇‚킹‚Å•œ†‚µ‚Ä‚àA“¾‚ç‚ê‚é‘—Mƒf[ƒ^‚Í‹¤’Ê‚Ì A0x3dbabeface‚ƂȂéB @y‚O‚O‚T‚Tz @ŽŸ‚ÉA“`‘—’†‚É‚Pƒrƒbƒg‚̃Gƒ‰[‚ª¶‚¶‚½ê‡‚ðl‚¦‚éBˆê—á‚Æ‚µ‚ÄA•„†‰»‚³‚ꂽ‘— Mƒf[ƒ^txcode FStNUv[#‚É‚¨‚¯‚é‚R•¶Žš–Ú‚Ìt‚ð•\‚·‚P‚Ui”‚O‚˜‚V‚S‚Ì‚Qƒrƒbƒg–Ú‚É ƒGƒ‰[‚ª¶‚¶‚ÄA‚O‚˜‚R‚Si•„†•¶Žš4j‚ƂȂèAŽóMƒf[ƒ^rxcode‚ªFS4NUv[#‚ƂȂÁ‚½ ê‡AŽóM‘•’u‚R‚̃}ƒbƒsƒ“ƒO‰ðœ•”‚R‚Q‚ÍA•ÏŠ·ƒ}ƒbƒv‚l‚ð—p‚¢‚Äè—]”Œn‚𕜌³‚µA è—]”Œno‚R‚UC‚S‚WC‚P‚WC‚S‚RC‚T‚OC‚W‚RC‚T‚UC‚Qp‚ª“¾‚ç‚ê‚éBƒf[ƒ^•œ†•” ‚R‚R‚ÍAè—]”Œn‚Ì’†‚Ì‚U‚‚Ìè—]‚¨‚æ‚Ñè—]‚ɑΉž‚·‚éƒRƒvƒ‰ƒCƒ€‚b‚ð—p‚¢‚ÄA’†‘l è—]’è—‚É‚æ‚è‘—Mƒf[ƒ^‚𕜆‚·‚éB•œ†‚É—p‚¢‚éè—]‚ɃGƒ‰[‚̉e‹¿‚ðŽó‚¯‚½è—]i ã‹L‚Ì—á‚Å‚Íè—]”Œn‚É‚¨‚¯‚é‚R”Ô–Ú‚Ì‚P‚WG‚W‚R‚𜔂Ƃµ‚½‚Æ‚«‚Ìè—]j‚ªŠÜ‚Ü‚ê‚È ‚¢ê‡‚É‚ÍA•œ†‚ÌŒ‹‰Ê‚Í0x3dbabeface‚ƂȂéBˆê•ûA•œ†‚É—p‚¢‚éè—]‚ÉAƒGƒ‰[‚̉e ‹¿‚ðŽó‚¯‚½è—]‚ªŠÜ‚Ü‚ê‚éꇂɂÍA•œ†‚ÌŒ‹‰Ê‚Í0x3dbabeface‚ƈقȂèAŠŽ‚ÂA‘¼‚Ì‘g ‚݇‚킹‚ł̕œ†Œ‹‰Ê‚Æ‚àˆÙ‚È‚é’l‚ƂȂéB‚±‚̂悤‚É‚µ‚Ä“¾‚ç‚ê‚é•¡”‚Ì•œ†Œ‹‰Ê‚Ì‚È ‚©‚ÅA“¯‚¶’l‚ª•¡”“¾‚ç‚ê‚é‚̂ͳ‚µ‚¢•œ†Œ‹‰Ê‚Å‚ ‚é0x3dbabeface‚݂̂ƂȂéB‚µ‚½‚ª ‚Á‚ÄA•¡”‚Ì•œ†Œ‹‰Ê‚ð‘ÎÛ‚Æ‚·‚鑽”Œˆ‚É‚æ‚èAŒë‚è‚̂Ȃ¢³‚µ‚¢•œ†Œ‹‰Ê‚ª“Á’肳‚ê ‚éB @y‚O‚O‚T‚Uz @ˆÈã‚Åà–¾‚µ‚½ƒf[ƒ^’ÊMƒVƒXƒeƒ€‚P‚ÅŽÀŒ»‚³‚ê‚é•„†^•œ†•û–@‚ÍA•œ†‚𒆑lè —]’è—‚ÉŠî‚ÂŒvŽZ‚É‚æ‚ès‚¦‚邽‚ßA‘å‚«‚ȕϊ·ƒe[ƒuƒ‹‚ð•K—v‚Æ‚¹‚¸AƒŠƒ\[ƒX‚ɧ ŒÀ‚Ì‚ ‚é‹@Ší‚Å‚à—˜—p‚µ‚â‚·‚¢B‚Ü‚½A•„†‚Ì\‘¢‚ª’Pƒ‚È‚½‚߃ƒ‚ƒŠ[‚ª‚È‚¢‘•’u‚â ‚l‚b‚t‚Ȃǂɉ—‚¢‚Ä‚à—˜—p‚µ‚â‚·‚¢B‚Ü‚½A•„†‚Ì’PˆÊ‚ª‚R`\”ƒoƒCƒg‚Å‚ ‚邽‚ß“`‘— ‚¨‚æ‚ш—’x‰„‚ª‚È‚AƒŠƒAƒ‹ƒ^ƒCƒ€«‚Ì—v‹‚³‚ê‚郃{ƒbƒg‚âŽÔ‚Ȃǂ̑•’uŠÔƒVƒŠƒA ƒ‹’ÊM‚ł̗˜—p‚É“K‚µ‚Ä‚¢‚éB‚Ü‚½A”ñ“¯ŠúƒVƒŠƒAƒ‹’ÊM‚Ì‘—ŽóM‘•’u‚âƒfƒoƒCƒXŠÔ’ÊM ‚Ö“K—p‚·‚邱‚Æ‚ª‚Å‚«‚éB@ci‚Pj
}‚P
}‚Q
}‚R
![]()
Patent Gazette Patent No. 7142977 — Data Communication System, Transmitting Device, and Receiving Device
▼ Change history (click to expand)
2024/ 8/23 : Changed unsigned integers in C implementation examples to ISO C99 compliant (e.g. uint64_t) 2022/10/ 8 : Patent number is listed with the registration of the patent 2022/ 9/ 7 : Added C implementation example 2022/ 9/ 7 : Added technical explanation (excerpt from the patent specification) 2022/ 7/ 2 : Changed super data usage example 2021/12/17 : Code comparison table and super data usage examples are added 2021/12/18 : Encoding and error correction examples are added