- 注册时间
- 2008-2-6
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 51573
- 在线时间
- 小时
|
发表于 2009-3-3 17:08:00
|
显示全部楼层
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <gmp.h>
- #include <math.h>
-
- #define l2 1700
- #define l3 1073
- #define l7 605
-
- mpz_t t2, t3, t7, tn;
- mpz_t a, b, c;
- char out[1024];
- unsigned int d[10][3];
-
- int filter(unsigned int i, unsigned int j, unsigned int k)
- {
- char * c = out;
- int e = 0, f = 0;
- int dc;
- if ((i == 0) && (j == 0)) return 0;
- if ((j == 0) && (k == 0)) return 0;
- mpz_pow_ui(a, t2, i);
- mpz_pow_ui(b, t3, j);
- mpz_pow_ui(tn, t7, k);
- mpz_mul(tn, tn, a);
- mpz_mul(tn, tn, b);
- mpz_get_str(out, 10, tn);
- // printf("%s\n", out);
- while (*c)
- {
- if (* c == '0')
- return 0;
- if (* c == '5') f = 1;
- if ((unsigned)(*c) % 2 == 0) e = 1;
- if ((f == 1) && (e == 1)) return 0;
- c ++;
- }
- return 1;
- }
-
- int main(void)
- {
- unsigned int i, j, k;
- int p = 0;
-
- mpz_init(t2);
- mpz_init(t3);
- mpz_init(t7);
- mpz_init(tn);
- mpz_init(a);
- mpz_init(b);
- mpz_init(c);
- mpz_set_ui(t2, 2);
- mpz_set_ui(t3, 3);
- mpz_set_ui(t7, 7);
- for (i = 0; i <= l2; i ++)
- for (j = 0; j <= l3; j ++)
- for (k = 0; k <= l7; k ++)
- if (log10(2.0) * i + log10(3.0) * j + log10(7.0) * k <= 512.0)
- if (filter(i, j, k))
- {
- fprintf(stdout, "%u, %u, %u\n", i, j, k);
- fflush(stdout);
- p ++;
- }
-
- printf("Total: %u\n", p);
- mpz_clear(c);
- mpz_clear(b);
- mpz_clear(a);
- mpz_clear(tn);
- mpz_clear(t2);
- mpz_clear(t3);
- mpz_clear(t7);
- return 0;
- }
复制代码 用了更准确的筛选方式
但100内需要补充带5的 |
|