3-2
1:: the standard answer giving by the author
//: S03:prime.cpp // Tests numbers for primality #include <iostream> #include <cmath> // for sqrt() int main() { using namespace std; const int MAX = 100; // Print 2 as a prime: cout << "2 "; for (int i = 3; i <= MAX; i += 2) { float val = i; // Produce float value int mid = static_cast<int>(sqrt(val)); int j; for (j = 3; j <= mid; j += 2) if (i % j == 0) break; if (j > mid) cout << i << ' '; } cout << endl; } ///:~
2 :: my first answer
#include <iostream>
using namespace std;
void zhishu(int n);
int main()
{cout << " please enter a number: \n";
int n;
cin >> n;
zhishu(n);
return 0;
}
void zhishu(int n)
{ cout << "全部质数为:" << " ";
for (int i=1;i<=n;i++)
{
int x=0;
for (int j=1;j<=i;j++)
if (i%j==0)
x++;
if (x==2)
cout << i << " ";
}
}
contrast: 跟作者的答案对比,他的程序算法更好,运行时间比我少。输入100000,我的运行24s,他的2s。我的可以继续完善,对输入的情况正负进行完善。