将ch4_8.cpp的程序(如下)改写为主函数调用isprime()函数的形式,以确定该数是否为素数。
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main() {
long a, b, l = 0;
cout << "please input two numbers: \n";
cin >> a >> b;
cout << "primes from " << a << " to " << b << " is:\n";
if (a == 2)
cout << "2";
if (a % 2 == 0)
a++;
for (long m = a; m <= b; m += 2) //步长为2
{
int sqrtm = sqrt(m);
int i;
for (i = 2; i <= sqrtm; i++) //判明素数
if (m % i == 0)
break;
//输出
if (i > sqrtm)//素数
{
if (l++ % 10 == 0)
cout << endl;
cout << setw(5) << m;
}
}
}
改写后:
#include <iostream >
#include <iomanip>
#include <cmath>
using namespace std;
bool isprime(int);
int main() {
long a, b, l = 0;
cout << "please input two numbers: \n";
cin >> a >> b;
cout << "primes from " << a << " to " << b << " is:\n";
if (a == 2)
cout << "2";
if (a % 2 == 0)
a++;
for (long m = a; m <= b; m += 2) //步长为2
{
if (isprime(m))
{
if (l++ % 10 == 0)
cout << endl;
cout << setw(5) << m;
}
}
}
bool isprime(int m) {
int sqrtm = sqrt(m);
int i;
for (i = 2; i <= sqrtm; i++)
if (m % i == 0)
break;
if (i > sqrtm)
return 1;
else
return 0;
}