改用快速開根
#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月16日 星期一
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);
}
#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都可以。也許和晶片組相關。
訂閱:
文章 (Atom)