CTime t = CTime::GetCurrentTime(); int n = t.GetMinute() * 60 + t.GetSecond(); while(n-- > 0) { rand(); } const int N = 100000; UINT A = rand()%N; UINT a = A ; CUIntArray arr; for(UINT i = 2 ; i <= a ; i ++ ) if(a % i == 0) { do { a = a/i ; } while(a%i == 0); arr.Add(i); i = 2 ; } int index = rand()%arr.GetSize() ; UINT B = arr[index] ;
//取得当前时间的分钟和秒 CTime t = CTime::GetCurrentTime(); int n = t.GetMinute() * 60 + t.GetSecond(); while(n-- > 0) { rand(); } const int N = 100000; UINT A = rand()%N; UINT a = A ; CUIntArray arr;//把A的所有因子不重复的放进数组 for(UINT i = 2 ; i <= a ; i ++ ) if(a % i == 0) { do { a = a/i ;//除掉所有的i. } while(a%i == 0); arr.Add(i); i = 2 ; } int index = rand()%arr.GetSize() ; UINT B = arr[index] ;rand()取随机数,并不随机,第一次执行结果相同.
int n = t.GetMinute() * 60 + t.GetSecond();
while(n-- > 0)
{
rand();
}
const int N = 100000;
UINT A = rand()%N;
UINT a = A ;
CUIntArray arr;
for(UINT i = 2 ; i <= a ; i ++ )
if(a % i == 0)
{
do {
a = a/i ;
}
while(a%i == 0);
arr.Add(i);
i = 2 ;
}
int index = rand()%arr.GetSize() ;
UINT B = arr[index] ;
只有找全所有的约数,才可能做到机率均等,如果可以机率不均等话,可以随机产生一个从
2到a/2的数c ,看c能不能整除,如不能则c++ 。最终得到b
CTime t = CTime::GetCurrentTime();
int n = t.GetMinute() * 60 + t.GetSecond();
while(n-- > 0)
{
rand();
}
const int N = 100000;
UINT A = rand()%N;
UINT a = A ;
CUIntArray arr;//把A的所有因子不重复的放进数组
for(UINT i = 2 ; i <= a ; i ++ )
if(a % i == 0)
{
do {
a = a/i ;//除掉所有的i.
}
while(a%i == 0);
arr.Add(i);
i = 2 ;
}
int index = rand()%arr.GetSize() ;
UINT B = arr[index] ;rand()取随机数,并不随机,第一次执行结果相同.
对于a只要判定它是不是能够被这些素数整除
检测范围就是2到sqrt(a)之间
to he_zhidan(何志丹:风云伐日) 兄台,要随机不用那么麻烦,只要提前做一个随机种子就OK了。只要在第一个rand()前加上下面一句就可以:
srand( (unsigned)time( NULL ) );
while((N % M) != 0)
{
}
{
srand(time(NULL));
a = rand()%100000+1;
while( a%(b=rand()%a+1) );
}