i6405.c

来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 34 行

C
34
字号
#include "fail.h"

typedef unsigned __int64 UINT;

unsigned mp[] = {
    3,5,7,13,
    17,19,31,
};

UINT L[100];

// is 2^q-1 prime?
int isPrime( unsigned q ) {
    unsigned i;
    UINT mask;

    mask = 1;
    mask <<= q;
    --mask;
    L[0] = 4;
    for( i = 1; i <= (q-2); ++i ) {
        L[i] = ( L[i-1] * L[i-1] - 2 ) % mask;
    }
    return( L[q-2] == 0 );
}

int main() {
    int i;
    for( i = 0; i < sizeof(mp)/sizeof(mp[0]); ++i ) {
        if( !isPrime( mp[i] ) ) _fail;
    }
    _PASS;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?