소수 표

#include <iostream>
#include <stdio.h>
#include <string.h>
#define PMAX 6000
#define MAX  65536
using namespace std;

int vis[MAX],prime[PMAX],c=0;

void primeTable()
{
    memset(vis,0,sizeof(vis));
    for(int i=2;i<=PMAX;i++)
    {
        for(int j=i*i;j<=MAX;j+=i)
        {
            vis[j]=1;
        }
    }
    for(int i=2;i<=MAX;i++)
    {
        if(!vis[i])prime[c++]=i;
    }
}

int main()
{
    //freopen("in.txt","r",stdin);
    primeTable();
    int n,res[17],rn;
    while(scanf("%d",&n)!=EOF)
    {
        rn=0;
        for(int i=0;i<c&&n;)
        {
            if(n%prime[i]==0)
            {
                n=n/prime[i];
                res[rn++]=prime[i];
            }
            else i++;
        }
        for(int i=0;i<rn-1;i++)printf("%d*",res[i]);
        printf("%d
",res[rn-1]); } return 0; }

좋은 웹페이지 즐겨찾기