//Factor.cpp //Copyright (C) 1999 Joseph Tucek //Factors numbers using an optimized trial-division method. #include #include #include void Factor(unsigned long N, unsigned long i); ofstream Out; int main(){ cout << "Factor" << endl; cout << "Copyright (C) 1999 Joseph Tucek" << endl; cout << "Factors numbers using an optimized trial-division method." << endl; cout << endl; cout << "Results will be stored in out.txt" << endl; Out.open("out.txt"); unsigned long i; cout << "Start at? "; cin >> i; unsigned long stop; cout << "Stop at? "; cin >> stop; for(; i>0 && i<=stop; i++){ cout << i << " = "; Out << i << " = "; Factor(i, 2); cout << endl; Out << endl; } Out.close(); return 0; } void Factor(unsigned long N, unsigned long i){ if(N==1) return; unsigned long RootN=(unsigned long int)sqrt(N)+1; while(i<=RootN){ if(!(N%i)){ cout << i << " "; Out << i << " "; break; } i++; } if(!(i<=RootN)){ cout << N << " "; Out << N << " "; return; } Factor(N/i, i); }