HIT1004
来源:互联网 发布:复杂网络 计算机 编辑:程序博客网 时间:2024/06/01 10:04
1、C++打表方式如下
#include <iostream>#include <fstream>using namespace std;int main(){ofstream outfile("out.txt");streambuf *streams=cout.rdbuf();//保存原来的cout对象cout.rdbuf(outfile.rdbuf());cout<<"打表正确哈哈"<<endl;cout.rdbuf(streams);//恢复对象 保存和恢复必须成对出现不然会出现错误cout<<"恢复正常!"<<endl;return 0;}
2、筛选打表
#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <fstream>using namespace std;#define N 5000001bool isprime[N];int prime[N];void dopprime()//埃拉托斯尼斯筛法,这个完全可以作为一个模版{ long long i,j;memset(isprime,true,sizeof(isprime));int cnt=0;isprime[1]=0;for( i=2;i<N;i++){if(isprime[i]){prime[++cnt]=i;for(j=i*i;j<N;j+=i)isprime[j]=false;}}}bool ifprime(long long x)//一般判素数法{int k=(int)sqrt(double(x));for(int i=1;prime[i]<=k;i++)if(x%prime[i]==0)return 0;return 1;}bool ok1(int a)//判断回环{ int b = 0 , c = a; while(a) { b = b * 10 + a % 10; a /= 10; } return b == c;}int main(){ dopprime(); ofstream outfile("prime_table.txt"); streambuf *streams=cout.rdbuf(); cout.rdbuf(outfile.rdbuf());//重定向到outfile int a,b,i; cin>>a>>b; for(i=a;i<b+1;i++) { if(ifprime(i)==true&&ok1(i)==true) cout<<i<<","; } cout.rdbuf(streams);//恢复正常 return 0;}
0 0