zoukankan      html  css  js  c++  java
  • FZU OJ 1075 :分解素因子

    Problem 1075 分解素因子

    Accept: 2161    Submit: 4126
    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
    先打表。再用一个数组来储存素数,最后找素数里面能够整除k的素数,把这些素数储存到另一个数组中。
    #include<cstdio>
    #include<algorithm>
    #include<iostream>
    #include<cstring>
    #define ll long long
    using namespace std;
    const int maxn=1e6+10;
    int a[maxn];
    int b[maxn];
    int c[maxn];
    int main()
    {
    	int k,x;
    	int i,j,K;
    	memset(a,0,sizeof(a));
    	//打表 
    	a[0]=a[1]=1;
    	for(i=2;i<=65540;i++)
    	{
    		if(a[i]==0)
    		{
    			for(j=2;j*i<=65540;j++)
    			{
    				a[i*j]=1;
    			}
    		}
    	}
    	//将素数储存到数组b中 
    	int p=0;
    	for(j=0;j<=65540;j++)
    	{
    		if(a[j]==0) b[p++]=j;
    	}
    	scanf("%d",&k);
    	while(k--)
    	{
    		memset(c,0,sizeof(c));
    		int sum=0;
    		scanf("%d",&x);
    		int ss;
    		for(ss=0;ss<p;)
    		{
    			if(x==0) break;
    			//寻找整除x的素数 
    			else if(x%b[ss]==0)
    			{
    				c[sum++]=b[ss];
    				x/=b[ss];
    				continue;
    			}
    			else if(x%b[ss]!=0) ss++;
    		}
    		K=sum;
    		for(i=0;i<K;i++)
    		{
    			if(i!=0) printf("*");
    			printf("%d",c[i]);
    		}
    		printf("
    ");
    	}
    	return 0;
    }
  • 相关阅读:
    Keil(MDK) 5 软件安装教程
    JPA 的specification动态查询
    idea 建立JPA项目(二)
    HBase单节点的安装与配置
    【codevs3012+codevs3037】线段覆盖4+线段覆盖5(DP)
    MySQL下载和安装教程
    二、单线程的 JavaScript
    #JS 基础之异步(一)
    JS 基础之: 继承的 六 种实现方式
    源码浅析-Vue3中的13个全局Api
  • 原文地址:https://www.cnblogs.com/Friends-A/p/9309025.html
Copyright © 2011-2022 走看看