枚举
素数
1.
#include<iostream>
#include<time.h>
using namespace std;
int main()
{
int N,i,j,sum=0;
cin >> N;
clock_t start = clock();
for (i = 2; i <= N; i++)
{
for (j = 2; j < i; j++)
{
if (i % j == 0)
break;
}
if (i == j)
{
cout << i << endl;
sum++;
}
}
cout<<sum;
clock_t end = clock();
double time = (double)(end - start);
cout <<"运行时间为"<< time<<"ms" << endl;
cout <<"运行时间为"<< time/ CLOCKS_PER_SEC <<"s" << endl;
}
当输入N为500000时,运行时间为40.425s.
2.
#include<iostream>
#include<time.h>
using namespace std;
int main()
{
int N, i, j, sum = 0;
cin >> N;
clock_t start = clock();
for (i = 2; i <= N; i++)
{
for (j = 2; j <= i/2; j++)
{
if (i % j == 0)
break;
}
if (j >i/2)
{
cout << i << endl;
sum++;
}
}
cout << sum;
clock_t end = clock();
double time = (double)(end - start);
cout << "运行时间为" << time << "ms" << endl;
cout << "运行时间为" << time / CLOCKS_PER_SEC << "s" << endl;
}
当输入N为500000时,运行时间为25.475s
3.
#include<iostream>
#include<cmath>
#include<time.h>
using namespace std;
int main()
{
int N,i,j,sum=0;
cin >> N;
clock_t start = clock();
for (i = 2; i <= N; i++)
{
for (j = 2; j <=sqrt(i); j++)
{
if (i % j == 0)
break;
}
if (j > sqrt(i))
{
cout << i << endl;
sum++;
}
}
cout << sum;
clock_t end = clock();
double time = (double)(end - start);
cout <<"运行时间为"<< time<<"ms" << endl;
cout <<"运行时间为"<< time/ CLOCKS_PER_SEC <<"s" << endl;
}
当输入N为500000时,运行时间为12.503s
4.
#include<iostream>
#include<cmath>
#include<time.h>
using namespace std;
int main()
{
int i,j,N,sum=1;
cin >> N;
cout << 2 << endl;
clock_t start = clock();
for (i = 3; i < N; i += 2)
{
for (j = 3; j <= sqrt(i); j += 2)
{
if (i % j == 0)
break;
}
if (j > sqrt(i))
{
cout << i << endl;
sum++;
}
}
cout << sum;
clock_t end = clock();
double time = (double)(end - start);
cout <<"运行时间为"<< time<<"ms" << endl;
cout <<"运行时间为"<< time/ CLOCKS_PER_SEC <<"s" << endl;
}
当输入N为500000时,运行时间为12.032s
5.
#include<iostream>
#include<cmath>
#include<time.h>
using namespace std;
int main()
{
int i, j, N,sum=0;
cin >> N;
clock_t start = clock();
for (i = 2; i <= N; i++)
{
if (i == 2 || i == 3)
cout << i << endl;
if (i % 6 != 1 && i % 6 != 5)
continue;
int k = (int)sqrt(i);
for (j = 5; j <= k; j+=6)
{
if (i % j == 0 || i % (j + 2) == 0)
break;
}
if (j > k)
{
cout << i << endl;
sum++;
}
}
sum += 2;
cout << sum;
clock_t end = clock();
double time = (double)(end - start);
cout <<"运行时间为"<< time<<"ms" << endl;
cout <<"运行时间为"<< time/ CLOCKS_PER_SEC <<"s" << endl;
}
当输入N为500000时,运行时间为11.961s