剑三藏剑小药:请把你们所知道的C语言中找质数的算法都编出来告诉我,拜托了!
//以前朋友写的一段C的,效率很高,我自己写的不及他
//Problem: Prime Ring Problem
//00:00.71 436K
//戴帽子的 2004-04-22
//=============================
#include <iostream>
#include <ctime>
#include <fstream>
using namespace std;
/*
#define cout out
ofstream fout("time.txt");
ofstream fin("hziee.txt");
ostream& out = fin;
ostream& timeout = fout;
*/
ofstream fin("hziee.txt");
int kase;
bool P[21][21];
short in[21];
short result[20];
short N;
bool Prime(int n)
{
int i;
for(i=2; i<n; i++) {
if(n%i==0)
return false;
}
return true;
}
void initial()
{
int i,j;
kase = 0;
for(i=1; i<21; i++){
for(j=i; j<21; j++) {
P[i][j] = Prime(i+j);
P[j][i] = P[i][j];
}
}
}
void Print()
{
int i;
for(i=0; i<N-1; i++)
fin<<result[i]<<" ";
fin<<result[i]<<endl;
}
void hziee(int k)
{
int i;
if(k == N)
{
if(P[result[0]][result[N-1]])
Print();
return;
}
for(i=result[k-1]%2 + 1; i<=N; i += 2) {
if(in[i])
continue;
if(P[result[k-1]][i]) {
result[k] = i;
in[i] = true;
hziee(k+1);
in[i] = false;
}
}
}
int main()
{
int i;
clock_t start, end, start1, end1;
start = clock();
initial();
end = clock();
cout<< double(end - start) / CLK_TCK <<endl;
in[1]=true;
result[0]=1;
cin>>N;
start1 = clock();
fin<<"Case "<<++kase<<":"<<endl;
for(i=2; i<=N; i++)
in[i] = false;
if(N%2 == 0)
hziee(1);
fin<<endl;
end1 = clock();
fin<< double(end1 - start1) / CLK_TCK <<endl;
return 0;
}
最好把你的程序先给出来
看看问题在那里吧