hdu 1164 Eddy's research I (水题,打表)

来源:互联网 发布:扫码软件下载 编辑:程序博客网 时间:2024/05/21 09:17

小记:忘记n==1时break了。WA了一次


思路:先建一个素数表,然后对输入的数从第一个素数开始除,能除掉的就除掉,然后输出,直到最后输入的数除的只剩下1就可以退出了。


代码:

#include <iostream>#include <cstdio>#include <cstring>using namespace std;#define N 100010#define MAX 1000010int p[MAX];bool  flag;int T, a, b, ans,n;int PrimeTable(int prime[])//打印素数表{    int pNum=0;    prime[pNum++]=2;    for(int i=3;i <= MAX ; i+=2)  //奇偶法    {        bool flag=true;        for(int j=0;prime[j]*prime[j]<=i;j++)  //根号法+递归法            if(!(i%prime[j]))            {                flag=false;                break;            }        if(flag)            prime[pNum++]=i;    }    return pNum;}int main() {    T = PrimeTable(p);    while(~scanf("%d",&n)) {        flag = 0;        for(int i = 0; i < T; ++i){            while(n%p[i]==0){                n/=p[i];                if(flag){                    printf("*%d",p[i]);                }                else {                    flag =1;                    printf("%d",p[i]);                }            }            if(n == 1)break;        }        printf("\n");    }    return 0;}


0 0
原创粉丝点击