joj2573: Product of two primes
2573: Product of two primes
Result | TIME Limit | MEMORY Limit | Run Times | AC Times | JUDGE |
---|---|---|---|---|---|
3s | 65536K | 929 | 287 | Standard |
输出所有在10000 – 20000之间,恰好可以分解为两个素数乘积的整数。将这些数从小到大输出。
Input
无
Output
每一行输出一个符合要求的数,按照从小到大排列。下面是输出的头和尾,中间部分需自行计算
10001 ... ... ... 19999
Problem Source: skywind
This problem is used for contest: 131
Submit / Problem List / Status / Discuss
枚举+埃拉托斯特尼筛法
先用筛法把素数找够(不用找太多,注意到两个因子相乘小于20000就行了),然后枚举。
1 #include <stdio.h> 2 3 int prime[20005]; 4 int a[20005]; 5 6 int main() 7 { 8 int i, j; 9 10 for (i=2; i<150; ++i) 11 { 12 for (j=i; j*i<20005; ++j) 13 { 14 prime[i*j] = 1; 15 } 16 } 17 18 for (i=2; i<20005; ++i) 19 { 20 for (j=i; j*i<20005; ++j) 21 { 22 if (!prime[i] && !prime[j]) 23 { 24 a[i*j] = 1; 25 } 26 } 27 } 28 29 for (i=10000; i<20000; ++i) 30 { 31 if (a[i]) 32 { 33 printf("%d\n", i); 34 } 35 } 36 37 38 return 0; 39 }