这个最大约数问题一直A不了,虽然一些简单的能够运行成功,但可能机子测试的时候用的数据太大吧,不过在网上找到一些关于这个问题的解析,虽然王晓东老师给的代码实在是没看懂(也没这个耐心看),但下面这段解析还是比较好的,也要花点时间看吧~~
上面的代码不知道是什么语言,但思路和王晓东老师给的代码思路一样,所以下面王晓东老师的代
码实现:
- #include<iostream>
- using namespace std;
- #define max Max
- const long MAXP = 100000;
- long prim[MAXP];
- long max, numb, PCOUNT; //max存放最多约数个数,numb存放约数个数最多的数
- void primes(); //用筛选法产生质数存于prim数组中
- long l, u;
- void search(long from, long tot, long num, long low, long up);
- int main()
- {
- primes();
- cin >> l >> u;
- if ((l == 1) && (u == 1))
- {
- max = 1;
- numb = 1;
- }
- else
- {
- max = 2;
- numb = l;
- search(1, 1, 1, l, u);
- }
- cout << max << endl << numb << endl;
- system("pause");
- return 0;
- }
- void primes()
- {
- bool get[MAXP+1];
- long i;
- for (i = 2; i <= MAXP; i++)
- get[i] = true;
- for (i = 2; i <= MAXP; i++)
- if (get[i])
- {
- long j = i + i;
- while (j <= MAXP)
- {
- get[j] = false;
- j += i;
- }
- }
- long ii, j;
- for (ii = 2, j = 0; ii <= MAXP; ii++)
- if (get[ii]) prim[++j] = ii;
- PCOUNT = j;
- }