2015年3月16日 星期一

找質數程式2

改用快速開根

#include <stdio.h>

unsigned int test_number;

float SquareRootFloat(float number)
{
    long i;
    float x, y;
    const float f = 1.5F;

    x = number * 0.5F;
    y  = number;
    i  = * ( long * ) &y;
    i  = 0x5f3759df - ( i >> 1 );
    y  = * ( float * ) &i;
    y  = y * ( f - ( x * y * y ) );
    y  = y * ( f - ( x * y * y ) );
    return number * y;
}

unsigned int not_prime(unsigned int x)
{
    unsigned int q_x;
    unsigned int i;

    if ( !(x & 0x1) ) return 2;
    q_x = SquareRootFloat(x);
    for (i=3; i<=q_x; i+=2)
        if ( x % i == 0 ) return i;
    return 0;
}

void main()
{
    test_number = 0x73d58987;
    if ( test_number % 2 == 0 ) test_number--;
    while ( not_prime(test_number) )
        test_number -= 2;
    printf("%d\n", test_number);
}

2015年3月12日 星期四

找質數程式

找一個質數,做為通信檢查用。
#include <stdio.h>
#include <math.h>

unsigned int test_number;

unsigned int not_prime(unsigned int x)
{
    unsigned int q_t;
    unsigned int i;

    if ( !(x & 0x1) ) return 2;
    q_t = sqrt(x);
    for (i=3; i<=q_t; i+=2)
        if ( x % i == 0 ) return i;
    return 0;
}

void main()
{
    test_number = 0x80000000;
    if( test_number % 2 == 0 ) test_number--;
    while( not_prime(test_number) )
       test_number -= 2; 
    printf("%d\n", test_number);
}

2015年3月3日 星期二

Virtual Box內的XP使用USB-COM接線的方法

自己的PC裝置,其中COM1為標準裝置,可以直接轉到Virtual Box內使用。COM4為USB轉RS232線產生出來的Virtual COM。
 Virtual Box內的設定
設定好開機,可以用超級終端機連上就是成功。
但不一定每一台PC都可以。也許和晶片組相關。