此段代码,可以快速计算1~m_iEnd的质数,并保存到list中。 CList<int, int> list; list.AddTail(2); int iListLen = list.GetCount(); int iMaxForSearch = m_iEnd; int iStart = 3; int iFind = 0; POSITION pos = NULL; double dSqrt = 0.0F; BOOL bDevided = FALSE; for (int i= iStart; i< iMaxForSearch; i++) { iListLen = list.GetCount(); bDevided = FALSE; dSqrt = sqrt(i); pos = list.GetHeadPosition(); for (int j= 0; j< iListLen; j++) { iFind = list.GetNext(pos); if(i % iFind == 0) { bDevided = TRUE; break; } if(iFind > (int)dSqrt) break; } if(bDevided == FALSE) list.AddTail(i); }