| /* SPDX-License-Identifier: BSD-2-Clause */ |
| /* |
| * Copyright (c) 2014, STMicroelectronics International N.V. |
| */ |
| #ifndef GUARD_PRIMETABLE_H |
| #define GUARD_PRIMETABLE_H |
| |
| #include <stdint.h> |
| |
| /* Primes Number Table |
| * All numbers up to 49999 are represented |
| * by a bit in the following array. |
| * A 0 means composite and a 1 mean a prime. |
| * For an odd number 3<= n <= 49999 we can find out |
| * if n is a prime by doing: |
| * n = (n-3)>>1; |
| * IsPrime = (PRIME_TABLE[n>>5] >> (n & 0x1f)) & 0x1) == 1; |
| * E.i., the primality of each odd number is stored as a bit. |
| */ |
| const uint32_t MAX_TABULATED_PRIME = 49999; |
| const uint32_t NR_STORED_PRIMES = 5133; |
| const uint32_t PRIME_TABLE[782] = { |
| 0x325a65b7, 0x40b6894d, 0xc3252619, 0x90cb4106, 0x2d021a64, 0x5244b090, |
| 0x94c308a2, 0x25144168, |
| 0x99212018, 0x841a4c90, 0x21128325, 0x8a452442, 0x36182102, 0x05a05a04, |
| 0x09288450, 0x32824494, |
| 0x4026184c, 0xc009224b, 0xa0892110, 0x60108264, 0x004c1699, 0x84022480, |
| 0x41344b40, 0x110412d8, |
| 0xa05144a4, 0x4802132c, 0x1821a003, 0x34804922, 0x04044108, 0x092086d2, |
| 0x12006030, 0x04309169, |
| 0xc10d8242, 0x00886980, 0x60225001, 0x0a48b011, 0x02532006, 0x04904a69, |
| 0x0029104a, 0x26510804, |
| 0x2880c100, 0xd2458408, 0xa2184d12, 0x01a60840, 0x40291281, 0x10422484, |
| 0x0c001928, 0x1208a051, |
| 0x80c20094, 0x0520d000, 0x1b002289, 0x94930004, 0x6030c141, 0x88080240, |
| 0x24110036, 0x6106132c, |
| 0x1244a408, 0x22902c10, 0x0c801244, 0x08601281, 0x008a0434, 0x40141965, |
| 0x13258200, 0x30480980, |
| 0x6812c041, 0x19080080, 0x90c32186, 0x21840008, 0x08240212, 0x80494806, |
| 0x00169021, 0x12440483, |
| 0x84996020, 0x29804104, 0xcb400440, 0x200040a0, 0x04240824, 0x902c244b, |
| 0x10406194, 0x49304a01, |
| 0x11409000, 0x02d00822, 0x2480c820, 0x00050210, 0xa41a4492, 0x60164009, |
| 0x920014c1, 0x04000422, |
| 0x29021b4c, 0x02680242, 0x22484500, 0x0c329941, 0x81050048, 0x14012000, |
| 0x49025220, 0x43088218, |
| 0x16002104, 0x64840229, 0x89243042, 0x22124c84, 0x01801200, 0x8800108a, |
| 0x02990d00, 0x20201044, |
| 0x42618483, 0x301800a0, 0x08b4010c, 0x51010648, 0x94c30002, 0x41120a44, |
| 0x40042081, 0x04400c82, |
| 0x21340908, 0x81000252, 0x06030830, 0x09008008, 0xca019008, 0x32892110, |
| 0x05064a0c, 0x8a009402, |
| 0x20520514, 0x00a00068, 0x90208248, 0xa4412016, 0x08001060, 0x12040098, |
| 0x12422c82, 0x41148100, |
| 0x012c3080, 0x240b40a4, 0x08908008, 0x50650003, 0x82000120, 0x21005848, |
| 0x83408602, 0x128a2404, |
| 0x08929049, 0x43050050, 0x24016086, 0x04229000, 0x034c0019, 0x00110982, |
| 0x40a40241, 0x0941220a, |
| 0xa0080c12, 0x68144021, 0x12409002, 0x96006c32, 0x20840904, 0x81000051, |
| 0x20906520, 0x0c008860, |
| 0x520c0252, 0x904a0910, 0x01205041, 0x02402219, 0x06000c00, 0x45304320, |
| 0x89443200, 0x00410082, |
| 0x6080d125, 0x8204b088, 0xb0004400, 0x04205a00, 0x40018083, 0x024a2004, |
| 0x40149045, 0x81290601, |
| 0x00422100, 0x01324240, 0x18002419, 0x10912022, 0x61840100, 0x10680250, |
| 0x200b0c20, 0x29140020, |
| 0x8a410448, 0x84080c00, 0x05204104, 0x40499050, 0x10006004, 0x00828029, |
| 0x0308a008, 0x80004106, |
| 0x4d224825, 0x48401400, 0x84832502, 0x00140121, 0x800c009a, 0xa24004b2, |
| 0x01120001, 0x8a2430c1, |
| 0x14090020, 0x28841a00, 0x48090282, 0x30424494, 0x08248809, 0x4124a013, |
| 0x00884880, 0x44201205, |
| 0x02082608, 0x16512800, 0x05244820, 0x092800d8, 0x82520004, 0x49145004, |
| 0x88218001, 0xa0900110, |
| 0x04001940, 0x80290602, 0x10422490, 0x40808108, 0x91202408, 0xb4c20080, |
| 0x64009860, 0x00442201, |
| 0x16810086, 0x00308960, 0x18600050, 0x840900a0, 0x40001005, 0x4200a04a, |
| 0x00190020, 0x05804208, |
| 0x83008012, 0x20c24514, 0x04040840, 0xc001a64a, 0xa04b2000, 0x28101020, |
| 0x51449291, 0x10522020, |
| 0x00944301, 0x08251090, 0x040a0004, 0x21128220, 0x08219081, 0x90804902, |
| 0x0c265008, 0xc2018491, |
| 0x020844a0, 0x00921141, 0x4204040a, 0x04806084, 0x4520d821, 0x1b400001, |
| 0x92502482, 0x01000048, |
| 0x814920ca, 0x84030400, 0x68008004, 0x4044940b, 0xb4000030, 0x28064800, |
| 0x40200090, 0x20982120, |
| 0x40929000, 0x0024a003, 0x24890084, 0x0c105000, 0x53008298, 0x14120800, |
| 0x64100100, 0x09440010, |
| 0x00494806, 0x21009301, 0x0200248b, 0x00812112, 0x0d064044, 0x00080440, |
| 0x224a0130, 0x08b48044, |
| 0x50090418, 0x00420992, 0x60328041, 0x18001408, 0x80900182, 0x64008308, |
| 0x10610040, 0x86410804, |
| 0x29060109, 0xd8002003, 0x00882030, 0x0802434c, 0x0a490442, 0x20c020b0, |
| 0x4082080d, 0x9020a011, |
| 0x20802914, 0x08301a04, 0x08009400, 0x04420020, 0x24104821, 0x01290202, |
| 0x02100400, 0x0006c100, |
| 0x88012041, 0xa0102402, 0x0080004c, 0x00601203, 0x10824134, 0x04220809, |
| 0x53200002, 0x848b6810, |
| 0x01209264, 0x49048610, 0x00000920, 0x21848020, 0x814c1042, 0x80120880, |
| 0x01801221, 0x18208448, |
| 0x26102c12, 0x08044140, 0x83409292, 0x100804a0, 0x4022080c, 0x92250008, |
| 0x144a0086, 0x60001840, |
| 0x42083001, 0x04800106, 0x0400c101, 0x10610208, 0x020304b4, 0x0880000c, |
| 0x88058448, 0x06014110, |
| 0x00045b08, 0x81208013, 0x10922500, 0x4012100d, 0x80012200, 0x80012016, |
| 0x08104a45, 0x53481000, |
| 0x960009a0, 0x00b0c308, 0x010820c0, 0x24184082, 0x28141024, 0x084510c0, |
| 0x04880402, 0x21240808, |
| 0x49410650, 0x02906030, 0x00a01069, 0xc1040200, 0x00014116, 0x2420c024, |
| 0x02488008, 0x00420182, |
| 0x00340261, 0x11603200, 0xa2190420, 0x48804304, 0x00009401, 0x12002432, |
| 0x21804808, 0xc3291080, |
| 0x104845a0, 0x44041020, 0x1009a202, 0xb0420100, 0x20124840, 0x08040018, |
| 0x00810404, 0x21900208, |
| 0x0948205a, 0x264000b4, 0x6004000c, 0x08202489, 0xa0800d12, 0x08261244, |
| 0x88290200, 0x20902504, |
| 0x08b49124, 0x0308040a, 0x14424012, 0x20000800, 0x13040088, 0x14032404, |
| 0x21008a00, 0x10050242, |
| 0x04410080, 0x09124100, 0x50202002, 0x02084820, 0x08201148, 0x08401610, |
| 0x02002194, 0x4080802c, |
| 0x9004a408, 0x00024190, 0x00225221, 0x50083600, 0x80402422, 0x64a44041, |
| 0x81000000, 0x82580802, |
| 0x08148209, 0x02042049, 0x80114122, 0x0c80100c, 0x48408090, 0x20804530, |
| 0x08228160, 0xd1010002, |
| 0x90882004, 0x21009024, 0x0a001618, 0x021100a2, 0x44844901, 0x88401082, |
| 0xa0100082, 0x00024020, |
| 0x58200489, 0x00992c32, 0x20804804, 0xc0608482, 0x00480430, 0x0092004d, |
| 0x93010409, 0x04034102, |
| 0x24100004, 0x120c0010, 0x800101a4, 0x00048008, 0x882500c2, 0x02004c00, |
| 0x6000430c, 0x40409000, |
| 0x02980802, 0x25065a00, 0x014894c1, 0x22100014, 0x48960060, 0x5100a040, |
| 0x84820900, 0x04001061, |
| 0x11080601, 0x96000002, 0x60004308, 0x19090000, 0x204044a0, 0x28028120, |
| 0x52413043, 0x26890530, |
| 0x09044840, 0x0a0104c0, 0x101200a4, 0x48220045, 0x01008202, 0x00096880, |
| 0x00200205, 0x12409099, |
| 0x10420c84, 0x44840201, 0x01011240, 0x22410c34, 0x20108021, 0xc0009400, |
| 0xa0104122, 0x01064008, |
| 0xc8201200, 0x10102000, 0x0c941028, 0x1004a000, 0x30024004, 0x04104020, |
| 0x1a04a498, 0x12120880, |
| 0x61208041, 0x01490200, 0x06004012, 0x00805001, 0x8220b003, 0x80806810, |
| 0x09240000, 0x09488242, |
| 0x22120004, 0x0c208900, 0x40208613, 0x90022900, 0x48120004, 0x010c2410, |
| 0x04d10180, 0x45000a68, |
| 0x002512c2, 0x200a4c10, 0x0002d100, 0x8a200000, 0x16102c00, 0x04804240, |
| 0x01489010, 0x20d80104, |
| 0x04801804, 0x810c0008, 0x00010110, 0x04221200, 0x59003009, 0x06010922, |
| 0x64204060, 0x90280210, |
| 0x82580002, 0x29948205, 0x18243080, 0x14904100, 0x29800b00, 0x08219011, |
| 0x02400024, 0x00200069, |
| 0xc001a251, 0x04020014, 0x20320260, 0x42049418, 0x10c02822, 0x60004901, |
| 0x11443008, 0x00004004, |
| 0x4182420c, 0x9040804b, 0x22800102, 0x28804244, 0xc3289010, 0x004a25a0, |
| 0x08840040, 0x402c2610, |
| 0x90030182, 0x04028044, 0x00480291, 0x04c10020, 0x00000028, 0x106120d0, |
| 0x040b0004, 0x68109320, |
| 0xc8408448, 0x22010020, 0x05060804, 0x024804c3, 0x02506400, 0x44901804, |
| 0x11088042, 0x04002016, |
| 0x2400d801, 0x10048081, 0x00020182, 0x21300140, 0x08251098, 0x800104a2, |
| 0x09001200, 0x524010c1, |
| 0x82010810, 0x0c205048, 0x83010002, 0x028004b4, 0x0000812c, 0x00002400, |
| 0x10490180, 0x64009a00, |
| 0x18042410, 0x90402104, 0x00b44848, 0x81092002, 0x84090030, 0x08805000, |
| 0x02241082, 0x86004912, |
| 0x00024200, 0x4b090080, 0x20d000a0, 0x44141144, 0x40212200, 0x008a0912, |
| 0x0d304821, 0x08408208, |
| 0x94830424, 0x01200141, 0x88403212, 0x20084002, 0x21040101, 0x100480c2, |
| 0xb0002802, 0x09a01808, |
| 0x80408201, 0x22900404, 0x48308825, 0x81040613, 0x30004890, 0x01000201, |
| 0x03040600, 0x84422404, |
| 0x40000108, 0x102d0052, 0x02024400, 0x00048001, 0x0a24840a, 0x82006410, |
| 0x2ca05048, 0x08090040, |
| 0x32c04000, 0x00020000, 0x800ca040, 0x30420190, 0x0d120260, 0x40403089, |
| 0x04820104, 0x04100921, |
| 0x9048021a, 0x80500080, 0x48840005, 0x1a012049, 0xb0884420, 0x2000010c, |
| 0x40601282, 0x10820434, |
| 0x00021140, 0x42008650, 0x04002090, 0x45100045, 0x02442400, 0x04410882, |
| 0x2484c320, 0x88002052, |
| 0x02510080, 0x40064028, 0xd0412400, 0xa0890c00, 0x20a40200, 0x00009200, |
| 0x000a4400, 0x00b40001, |
| 0x11250410, 0x80404184, 0x61008244, 0x1a000000, 0x14410002, 0x25208101, |
| 0x814102c8, 0x82124004, |
| 0x49008020, 0x0a009440, 0x26102800, 0x21825808, 0x824810d2, 0x22000100, |
| 0x04320024, 0x10210003, |
| 0x00c90104, 0x28100025, 0x11481299, 0x84000482, 0x0090c008, 0x19000288, |
| 0x044a4404, 0x60869204, |
| 0x1005a040, 0x02090c20, 0x08201100, 0x41608293, 0x12180080, 0x04209101, |
| 0x800d2412, 0x14096912, |
| 0x20020021, 0x01002098, 0x92100980, 0x44844268, 0x00290240, 0x00520c22, |
| 0x48900300, 0x10210488, |
| 0x14182012, 0x20204200, 0x82080440, 0x20020404, 0x0c801104, 0x40000001, |
| 0x90810116, 0x20104800, |
| 0x1a000600, 0x80902c24, 0x40100221, 0x8048000a, 0x000008b6, 0x01801020, |
| 0x98442008, 0x32802502, |
| 0x0c041208, 0x40019442, 0x20582110, 0x0cb48800, 0x40000002, 0x80026102, |
| 0x00028000, 0x4b041291, |
| 0x00110102, 0x00948868, 0x08043050, 0x220b0082, 0x01140108, 0x42202441, |
| 0x14114810, 0x20000240, |
| 0xc0001202, 0x30080194, 0x40800024, 0x10288050, 0x80806886, 0x49021020, |
| 0x49080000, 0x82822100, |
| 0x40204300, 0x90291008, 0x24080010, 0x68000105, 0x40242089, 0xa4000002, |
| 0x00021104, 0x08218012, |
| 0x22000530, 0x04161009, 0xc2002210, 0x84032004, 0x40200060, 0x094c0010, |
| 0x10510824, 0x60244200, |
| 0x09481008, 0x00414c04, 0x01825005, 0x00619400, 0x02082122, 0x00200204, |
| 0x80080280, 0x02400190, |
| 0x08348944, 0x02040200, 0xa4420102, 0x0c100224, 0x18403201, 0x00010084, |
| 0x04248929, 0x08442090, |
| 0x801a0424, 0x6802c300, 0xc2418000, 0x20812010, 0x20244008, 0x00289051, |
| 0x00802480, 0x0c201048, |
| 0x91012001, 0x04402002, 0x0c100841, 0x41008280, 0x82002c20, 0x0094c840, |
| 0x11003250, 0x005100a0, |
| 0x0006820c, 0x4a403000, 0x06884130, 0x09061840, 0x09000010, 0x10906020, |
| 0x0820812c, 0x0101a240, |
| 0x14c80982, 0x60220004, 0x13001080, 0x80c00d00, 0x05100a09, 0x9900100a, |
| 0x20000430, 0x40049021, |
| 0x40408083, 0x34002130, 0x21044148, 0xc0010240, 0x00020584, 0x0000004c |
| }; |
| |
| #endif /* include guard */ |