FOJ 1057 分解素因子

来源:互联网 发布:网络直播监督平台 编辑:程序博客网 时间:2024/05/16 15:21

Problem 1075 分解素因子

Accept: 1207    Submit: 2323
Time Limit: 1000 mSec    Memory Limit : 32768 KB

Problem Description

假设x是一个正整数,它的值不超过65535(即1<x<=65535),请编写一个程序,将x分解为若干个素数的乘积。

Input

输入的第一行含一个正整数k (1<=k<=10),表示测试例的个数,后面紧接着k行,每行对应一个测试例,包含一个正整数x。

Output

每个测试例对应一行输出,输出x的素数乘积表示式,式中的素数从小到大排列,两个素数之间用“*”表示乘法。

Sample Input

2 11 9828

Sample Output

11 2*2*3*3*3*7*13
 
思路:首先先进行素数打表,然后除看有哪些可以除尽,技巧方面在于i=i-1;
AC代码:
#include<iostream>using namespace std;int a[7000];int prime[65535];int main(){int i,j,num=0;;prime[0]=prime[1]=0;for(i=2;i<65535;i++)prime[i]=1;for(i=2;i<65535;i++){if(prime[i]){a[num++]=i;for(j=2;j*i<65535;j++)prime[j*i]=0;}}int t,n;while(scanf("%d",&t)!=EOF){while(t--){scanf("%d",&n);for(i=0;i<7000;i++)if(a[i]&&n%a[i]==0){printf("%d",a[i]);n/=a[i];break;}for(i=0;i<7000;i++){if(n==1)break;else if(a[i]&&n%a[i]==0){printf("*%d",a[i]);n/=a[i];i=i-1;}}            printf("\n");}}return 0;}

原创粉丝点击