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