分解

来源:互联网 发布:淘宝平台账务处理 编辑:程序博客网 时间:2024/04/27 16:29

写着玩的

#include <iostream>#include <cstring>#include <cstdio>using namespace std;bool isp[200005];struct node{    int num, ci;}zhi[200005];int cnt;void shai(){    for(int i=2; i*i<=200000; i++)        if(isp[i])            for(int j=i+1; j<=200000; j+=i)                isp[j] = false;}int main(){    memset(isp, true, sizeof(isp));    isp[0] = isp[1] = false;    shai();    int a;    printf("Please input a number which belongs to [1, 200000]:\n");    cin>>a;    for(int i=2; i*i<=a; i++){        if(isp[i] && a%i==0){            zhi[++cnt].num = i;            zhi[cnt].ci = 1;            a /= i;            while(a%i==0){                a /= i;                zhi[cnt].ci++;            }        }    }    printf("\nThe decom is\n--------------\n\n");    for(int i=1; i<cnt; i++)        printf("%d^%d * ", zhi[i].num, zhi[i].ci);    if(cnt)printf("%d^%d", zhi[cnt].num, zhi[cnt].ci);    if(cnt && a)    printf(" * %d^1", a);    if(!cnt && a)   printf("%d", a);    printf("\n\n--------------");    return 0;}