2017年6月1日星期四

素数算法

#include <stdio.h>
#include <iostream>
#include <list>
#include <stack>
using namespace std;
int Create_Prime(int prime[],int n,int total)
{
        register int i,j,gab,count;
        gab=2;
        for (i=7; i<=n; i+=gab)
        {
                count=1;
                gab=6-gab;
                for (j=0; prime[j]*prime[j]<=i; j++)
                {
                        if (i%prime[j]==0)
                        {
                                count=0;
                                break;
                        }
                }
                if (count)
                {
                        prime[total]=i;
                        total++;
                }
        }
        return total;
}
int main()
{
        stack<int> s;
        int prime[30000]={2,3,5};
        int total=3;
        int i,r,tmp;
        int n=200000;
        total=Create_Prime(prime,n,total);
        for (i=0; i<total; i++)
        {
                tmp=prime[i];
                while (prime[i]!=0)
                {
                        r=prime[i]%2;
                        prime[i]/=2;
                        s.push(r);
                } //二进制格式输出
                cout<<"\t";
                while (!s.empty())
                {
                        cout<<s.top();
                        s.pop();
                }
                cout<<"\t";
                printf("%d",tmp);
                if (i&&!(i%10))
                {
                        putchar('\n');
                }
                putchar('\n');
        }
        return 0;
}

没有评论:

发表评论