1.最大公约数
两个数x1,x2 (x1>x2),他们之间的差y1=x1-x2
如有公约数u,那么会有下面的等式
x1 = a*u
x2 = b*u
x1 = c*u + y1
y1 = d*u
当d=1时,u最大
2.求100以内质数(答案少2)
- void CreateOdd(vector<unsigned int>& vl)
- {
- vl.resize(49);
- for(int i=3,k=0;i<100;i+=2,++k)
- {
- vl[k] = i;
- }
- }
- void PrintList(ostream& osm, const vector<unsigned int>& vl)
- {
- size_t nMaxCount = vl.size();
- for(size_t i=0; i<nMaxCount; ++i)
- {
- osm << std::setw(2) << std::right << vl[i] << " ";
- if ((i+1)%16==0) osm << "/n";
- }
- osm << "/n";
- }
- void foreclose(vector<unsigned int>& vl)
- {
- size_t nMaxCount = vl.size();
- size_t i=0;
- size_t M=0;
- size_t EX=0;
- while((i<nMaxCount) && ((M=vl[i])!=0))
- {
- EX = i + i*M;
- while ((EX+=M)<nMaxCount)vl[EX] = 0;
- ++i;
- }
- }