- 注册时间
- 2007-12-27
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 42482
- 在线时间
- 小时
|
发表于 2008-6-27 12:54:29
|
显示全部楼层
-
- #if 1
- #define _Test_HI
- #define integer CHugeInt
- #else
- #define _Test_HX
- #define integer CHugeIntX
- #endif
- #define K 16
- #define NP 6 //Total 6 primes less than K: 2,3,5,7,11,13
- int plist[NP]={2,3,5,7,11,13};
- int order[NP][K];
- int ntype[K];
- #define HEAD 1
- #define TAIL 2
-
- void init_order()
- {
- int orig[K];
- int i;
- for(i=0;i<NP;i++){
- int j;
- int c=0,s;
- for(j=0;j<K;j++)orig[j]=j;
- for(c=0,s=-1;c<K;c++){
- int d=0;
- for(d=0;d<plist[i];d++){
- s++;if(s>=K)s=0;
- while(orig[s]==-1){s++;if(s>=K)s=0;}
- }
- order[i][c]=orig[s];
- orig[s]=-1;
- }
- ntype[order[i][0]]|=HEAD;
- ntype[order[i][K-1]]|=TAIL;
- }
- }
- int tvalue[]={1,3,7,9};
-
- bool next_valid(int buf[K])
- {
- int i;
- for(i=K-1;i>=0;i--){
- if(buf[i]==9){
- buf[i]=0;
- }else{
- buf[i]++;
- break;
- }
- }
- if(i<0)return false;
- for(i=0;i<K;i++){
- if(ntype[i]&TAIL){
- if((buf[i]&1)==0){
- buf[i]++;
- }
- if(buf[i]==5)buf[i]=7;
- }else if(ntype[i]&HEAD){
- if(buf[i]==0){
- buf[i]=1;
- }
- }else{
- }
- }
- return true;
- }
-
- int main(int argc, char* argv[])
- {
- integer u;
- int c=0,i;
- int buf[K];
- init_order();
- for(c=0;c<K;c++)buf[c]=0;
- do{
- int j;
- if(!next_valid(buf))break;
- for(i=0;i<NP;i++){
- u=0;
- for(j=0;j<K;j++){
- u*=10;u+=buf[order[i][j]];
- }
- if(!u.IsPrime()){
- break;
- }
- }
- if(i==NP){
- for(c=0;c<K;c++){
- printf("%d",buf[c]);
- }
- printf("\n");
- }
- }while(1);
- return 0;
- }
复制代码 |
|