1059. Prime Factors

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.

Input Specification:

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

Output Specification:

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.

Sample Input:

97532468

Sample Output:

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

题目大意:给一个整数,将其分解成素数因子,并按要求输出。

主要思想:思路是很直接的,先写一个判断是否为素数的方法,获取输入后判断:如果该数为1,则结果也为1,结束;若该数本身就为素数,则同样无需分解直接输出(这一步很重要,不然如果是个很大的素数就肯定超时了,因为这样从2至这个大数之间的每一个数都需要判断是否为素数,耗时很大)。

接下来,在循环中判断当前素数是否为该数因子,如果是因子,则用数num除以因子将其分解,并按要求输出。注意,在每次成功分解后都需要判断此时的数是否为素数,如果是则直接结束(理由和上面相同,如果给出的数是一个小质数与一个很大的质数相乘,仍会陷入超时的危机);如果该素数不是因子,则找到下一个素数,重复上述操作。直到被分解剩余的部分已经小于当前素数的时候,循环结束。

#include <iostream>
#include <math.h>
using namespace std;
bool is_prime(int x); int main(void) {
int num;
int i = 2;
bool first = true; cin >> num;
cout << num << "=";
if (num == 1) { //输入为1时,输出 1=1
cout << 1 << endl;
return 0;
}
if (is_prime(num)) { //输入素数时,直接输出无需分解
cout << num << endl;
return 0;
}
while (num >= i) {
int count = 0;
while (num % i == 0) {
num /= i; //num值越来越小
count++; //当前质数因子的数量
}
if (count > 0) {
if (!first) cout << "*"; //第一次输出不需要*号
if (count == 1)
cout << i;
else
cout << i << "^" << count;
first = false;
//在每次分解后都需要判断此时的数是否为质数,如果是则直接结束
if (is_prime(num)) {
cout << "*" << num << endl;
return 0;
}
}
else {
while (!is_prime(++i)) //寻找下一个素数因子
continue;
}
}
cout << endl; return 0;
} bool is_prime(int x) {
if (x < 2) return false;
for (int i = 2; i <= sqrt(x); i++) {
if (x % i == 0)
return false;
}
return true;
}

PAT-1059 Prime Factors (素数因子)的更多相关文章

  1. PAT 1059 Prime Factors[难]

    1059 Prime Factors (25 分) Given any positive integer N, you are supposed to find all of its prime fa ...

  2. PAT 1059. Prime Factors (25) 质因子分解

    题目链接 http://www.patest.cn/contests/pat-a-practise/1059 Given any positive integer N, you are suppose ...

  3. PAT 1059. Prime Factors

    反正知道了就是知道,不知道也想不到,很快 #include <cstdio> #include <cstdlib> #include <vector> using ...

  4. PAT 甲级 1059 Prime Factors (25 分) ((新学)快速质因数分解,注意1=1)

    1059 Prime Factors (25 分)   Given any positive integer N, you are supposed to find all of its prime ...

  5. 1059 Prime Factors (25分)

    1059 Prime Factors (25分) 1. 题目 2. 思路 先求解出int范围内的所有素数,把输入x分别对素数表中素数取余,判断是否为0,如果为0继续除该素数知道余数不是0,遍历到sqr ...

  6. PAT Advanced 1059 Prime Factors (25) [素数表的建⽴]

    题目 Given any positive integer N, you are supposed to find all of its prime factors, and write them i ...

  7. PAT 甲级 1059 Prime Factors

    https://pintia.cn/problem-sets/994805342720868352/problems/994805415005503488 Given any positive int ...

  8. 1059. Prime Factors (25)

    时间限制 50 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 HE, Qinming Given any positive integer N, y ...

  9. 1059 Prime Factors(25 分)

    Given any positive integer N, you are supposed to find all of its prime factors, and write them in t ...

  10. PAT甲题题解-1059. Prime Factors (25)-素数筛选法

    用素数筛选法即可. 范围long int,其实大小范围和int一样,一开始以为是指long long,想这就麻烦了该怎么弄. 而现在其实就是int的范围,那难度档次就不一样了,瞬间变成水题一枚,因为i ...

随机推荐

  1. Linux系统管理第一二三四章 系统管理 目录和文件管理 安装及管理程序 账号管理

    命令 功能 序号 第一章   cd 切换目录 1 stat 查看文件状态信息 2 cp 复制   -f -i -p -r 3 du 统计磁盘的大小 4 find 精细查找文件和目录 5 help 帮助 ...

  2. linux rpm包

    rpm包,软件包,程序包,以.rpm结尾的包 我们刚开始安装的Linux系统是最小化安装(minimol),只安装系统,不安装不必要的软件包 刚开始vim,ifconfig,tree等命令都没有,当然 ...

  3. 在服务器上发布第一个.net项目

    作为一名前端开发者,对后端一窍不通可是不行的.公司后端所用的恰好是.net技术,日常开发常见MVC架构,然而还是对MVC不甚了解,前端开发也多有掣肘.本人很想摸索清楚如何构建一个asp.net的项目, ...

  4. 参加Windows7深圳社区发布会

    昨天下午参加了深圳DotNet俱乐部组织的Windows7深圳社区发布会. 开场:朱兴林,俱乐部简介及Win7的发布情况 Session 1,万洪,Windows7的新特性 Session 2,张善友 ...

  5. [开发笔记]-unix时间戳、GMT时间与datetime类型时间之前的转换

    前段时间项目中涉及到了MySql和MsSql数据类型之间的转换,最近又在研究新浪微博的API,涉及到了带有时区的GMT时间类型的转换,所以,特记录于此,以备日后查询. 一:UNIX时间戳与dateti ...

  6. cobbler的网页操作

    需求:安装一台服务器 1.指定两块网卡一块外网一块内网2.内网ip10.0.0.62外网为172.16.1.623.主机名为m02 开始吧! 1.添加镜像文件 2.创建ks文件 编写ks文件 附:ks ...

  7. 【ElasticSearch学习】之一图读懂文档索引全过程

    ES索引过程详解: 1.客户端发送索引请求. 客户端向ES节点发送索引请求,以RestClient客户端发起请求为例: ES提供了Java High Level REST Client,用户可以通过R ...

  8. Nakamori Akina

    听过中森明菜的歌以后,一直想写点什么.恰好前段时间看过她的一个访谈https://b23.tv/av13810011,节目里已经39岁左右的她看着已经有些衰老,但是那份属于她的天真却保持的很好. 节目 ...

  9. 图论--网络流--最大流--POJ 1698 Alice's Chance

    Description Alice, a charming girl, have been dreaming of being a movie star for long. Her chances w ...

  10. Jmeter 性能测试(需求/指标分析与定义)

    1.一般而言,被测对象的性能需求,会在用户需求规格说明书中给出,如单位时间内的访问量需达到多少?业务响应时间不超过多少?业务成功率不低于多少?硬件资源耗用要在一个合理的范围中. 如下性能指标非常明确 ...