题目:

Given any positive integer N, you are supposed to find all of its prime factors, and write them in the format N = p1^k1 * p2^k2 *...*pm^km.

输入描述:

Each input file contains one test case which gives a positive integer N in the range of long int.

输出描述:

Factor N in the format N = p1^k1 * p2^k2 *...*pm^km, where pi's are prime factors of N in increasing order, and the exponent ki is the number of pi -- hence when there is only one pi, ki is 1 and must NOT be printed out.

输入例子:

97532468

输出例子:

97532468=2^2*11*17*101*1291

思路:

本题是正整数n的质因子分解问题。n分为3种情况:

1、n=1,特殊数据,既不是质数也不能分解,直接按指定格式输出即可。

2、n是素数,不用分解,直接按指定格式输出即可。要判别n是否为质数,有多种方法,对于本题而言,最简单的方法是使用试商法。因为即使对于n=2147483647=2^31-1范围内的整数,用试商法效率也是很高的,具体参见下面给出的代码。

3、n是大于1的非质数,这正是本题要完成的工作。可以从最小的素数2开始,依次用2,3,4,5,...,sqrt(n)对n进行分解。因为当对2进行分解时,后面关于2的倍数的其他数字也就不能被n整除了,因此也就只对质数的进行计算,记得每次结束某个数字的因式分解之后,更新一下sqrt(n)。

当然,可以考虑采用筛法,事先把一定范围内的质数全部筛选出来,存入数组,然后只用这些质数去分解n,效率会相应提高很多。

(4)本题还有一点需要注意,即打印的格式。

代码:

在线测试:http://www.nowcoder.com/questionTerminal/ea8f62f661554099baed9baa471c6883?orderByHotValue=1&done=0&pos=6&onlyReference=false

AC代码:

#include<iostream>
#include<math.h> using namespace std; bool isPrime(int n){
if(n<2)
return false;
int k=int(sqrt(n+0.0));
for(int i=2;i<=k;i++){
if(n%i==0)
return false;
}
return true;
} void PrimeFactor(int n){
cout<<n<<"=";
if(n==1){
cout<<n<<endl;
return;
}
if(isPrime(n)){
cout<<n<<endl;
return;
} int k=int(sqrt(n+0.0));
int exp=0;
bool first=true; for(int i=2;i<=k;i++){
exp=0;
if(n%i==0){
while(n%i==0){
n=n/i;
++exp;
}
if(first){
if(exp>=2) cout<<i<<"^"<<exp;
else cout<<i;
first=false;
}
else{
if(exp>=2) cout<<"*"<<i<<"^"<<exp;
else cout<<"*"<<i;
}
k=int(sqrt(n+0.0));
}
} if(n>1) cout<<"*"<<n;
cout<<endl;
} int main(){
int n;
while(cin>>n){
PrimeFactor(n);
}
return 0;
}

(笔试题)质数因子Prime Factor的更多相关文章

  1. 杭电 2136 Largest prime factor(最大素数因子的位置)

    Largest prime factor Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  2. 剑指Offer——美团内推+校招笔试题+知识点总结

    剑指Offer--美团内推+校招笔试题+知识点总结 前言 美团9.9内推笔试.9.11校招笔试,反正就是各种虐,笔试内容如下: 知识点:图的遍历(DFS.BFS).进程间通信.二叉查找树节点的删除及中 ...

  3. C 2010年笔试题

    1 有一个函数, 写一段程序,输入的值,输出的值. #include <stdio.h> void main() { int x,y; printf("输入x:"); ...

  4. 嵌入式Linux C笔试题积累(转)

    http://blog.csdn.net/h_armony/article/details/6764811 1.   嵌入式系统中断服务子程序(ISR) 中断是嵌入式系统中重要的组成部分,这导致了很 ...

  5. Problem 3: Largest prime factor

    The prime factors of 13195 are 5, 7, 13 and 29. What is the largest prime factor of the number 60085 ...

  6. R语言学习——欧拉计划(3)Largest prime factor 求最大质因数

    The prime factors of 13195 are 5, 7, 13 and 29. What is the largest prime factor of the number 60085 ...

  7. HDU 2136 素数打表+求质数因子

    Largest prime factor Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  8. [暑假集训--数论]hdu2136 Largest prime factor

    Everybody knows any number can be combined by the prime number. Now, your task is telling me what po ...

  9. The largest prime factor(最大质因数)

    1. 问题: The prime factors of 13195 are 5, 7, 13 and 29.What is the largest prime factor of the number ...

随机推荐

  1. redis优化方案

    流水线(pipelined) 批量提交redis命令,减少通信次数 事务 mulit,事务的开始 exec,执行事务快内的命令 discard,放弃事务快内的命令 watch,监视key,如果key改 ...

  2. Java常用工具类之时间转换(注释乱码,全)

    package com.wazn.learn.util; import java.text.ParseException; import java.text.SimpleDateFormat; imp ...

  3. Spring JDBC主从数据库访问配置

    通过昨天学习的自定义配置注释的知识,探索了解一下web主从数据库的配置: 背景:主从数据库:主要是数据上的读写分离: 数据库的读写分离的好处? 1. 将读操作和写操作分离到不同的数据库上,避免主服务器 ...

  4. urllib2 调用salt restapi

    1获取token #_*_coding:utf8_*_ import urllib2 import json def get_token(): url='http://10.20.32.86:8000 ...

  5. [APIO2018]铁人两项 --- 圆方树

     [APIO2018] 铁人两项 题目大意: 给定一张图,问有多少三元组(a,b,c)(a,b,c 互不相等)满足存在一条点不重复的以a为起点,经过b,终点为c的路径 如果你不会圆方树 ------- ...

  6. 矩阵树定理(Matrix Tree)学习笔记

    如果不谈证明,稍微有点线代基础的人都可以在两分钟内学完所有相关内容.. 行列式随便找本线代书看一下基本性质就好了. 学习资源: https://www.cnblogs.com/candy99/p/64 ...

  7. 【并查集】BZOJ4668-冷战

    [题目大意] 给出N个军工厂和M 个操作,操作分为两类: • 0 u v,这次操作苏联会修建一条连接 u 号军工厂及 v 号军工厂的铁路,注意铁路都是双向的; • 1 u v, Reddington ...

  8. 20162327WJH Android开发程序设计实验报告

    学号 20162327 <程序设计与数据结结构>Android开发程序设计实验报告 实验一:Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第 ...

  9. vagrant 常用命令以及常用操作

    列出这些命令,主要是防止脑内存不足.目前这些命令是我常用的,以后其他命令用的多,我再继续添加... 分享些本人用的百度网盘box,国外的太坑... 本人分享的百度网盘:http://pan.baidu ...

  10. Unity 播放音频文件

    Unity 播放音频文件参考代码: public void Play(string strSoundName, float autoDestroyTime = 0f, bool bLoop = fal ...