1、因为 n如果整除i,则n也能整除n/i .故循环条件可以到 根号n 。根号n乘以根号n 大于n
#include "stdafx.h"
#include <iostream>
using namespace std;
bool is_prime(int n){
for(int i=2;i*i<=n;i++){
if (n % i == 0) return false;
}
return n != 1 ;
}
int _tmain(int argc, _TCHAR* argv[])
{
if (is_prime(52)) cout << "yes" << endl;
return 0;
}
2、改进版本
#include "stdafx.h"
#include <iostream>
using namespace std;
bool is_prime(int n){
for(int i=2;i*i<=n;i++){
if (n % i == 0) return false;
}
return true;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a=52;
if (is_prime(a)) cout << "yes" << endl;
if (!is_prime(a)) cout << "no" << endl;
return 0;
}
3、区间内有多少个素数
#include "stdafx.h"
#include <iostream>
using namespace std;
bool is_prime(int n){
for(int i=2;i*i<=n;i++){
if (n % i == 0) return false;
}
return true;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a=11;
int count =0;
for (int i=2;i<=a;i++){
if (is_prime(i))
{ cout << i<<"是素数 prime" << endl;
count++;
}
else cout << i<<"不是素数" << endl;
}
cout << "一共有"<<count<<"个素数"<< endl;
return 0;
}