这是一道素数因子分解的问题:

1.先打印素数表出来,以便后期使用,素数表的大小就是10^5级别就可以,因为输入的数是long int(即就是int而已),大小最大21亿(10^10量级的),我们这里素数范围只需要sqrt(10^10)=10^5就行

(使用2-根号n依此取模的方式  或者  使用筛选法),我下面是使用筛选法直接打印素数表的

2.在sqrt_n范围的素数逐个进行一到多次取模运算判断是否是否为因子以及因子的阶数,并将结果存在struct factor的数组fac中

3.如若最后剩下的n不是1(因为n不断取模后,最后如果在sqrt_n范围内就能解决,n就会变为1,不需要再操作什么),即将n放入struct factor的数组fac中,阶数为1

4.最后就是按照格式要求打印就行,现在用着printf,scanf怎么感觉比以前cin,cout还要舒服,不知道是怎么回事哈哈

小坑:1.素数表是从2开始的,所以打印,判断素数什么的循环都要从i=2开始,不然会陷入死循环

   2.第三部判断n为1,不是n为0

#include<iostream>
#include<stdio.h>
#include<cmath>
using namespace std;
int isprime[]; //0是1不是 void find_prime(int n){
for(int i=;i<=n;++i){ //从2开始
if(isprime[i]==){
for(int j=i+i;j<=n;j+=i){
isprime[j]=;
}
}
}
} struct factor{
int f;
int p;
}fac[]; int main(){
freopen("in.txt","r",stdin); int input;
scanf("%d",&input);
if(input==){ //特殊情况为1
printf("1=1");
return ;
}
int n=input; int sqrt_n=sqrt(n);
find_prime(sqrt_n); int posi=;
for(int i=;i<=sqrt_n;++i){ //一定要从2开始
if(isprime[i]==){
int count=;
while(n!= && n%i==){
count++;
n/=i;
}
if(count!=){
fac[posi].f=i;
fac[posi].p=count;
posi++;
}
if(n==)
break;
}
}
if(n!=){ //不等于1
fac[posi].f=n;
fac[posi].p=;
}
printf("%d=",input);
for(int i=;;++i){
if(fac[i].p==)
break;
if(i!=)
printf("*");
printf("%d",fac[i].f);
if(fac[i].p!=)
printf("^%d",fac[i].p);
} return ;
}

PAT_A1059的更多相关文章

  1. PAT_A1059#Prime Factors

    Source: PAT A1059 Prime Factors (25 分) Description: Given any positive integer N, you are supposed t ...

随机推荐

  1. Jenkins配置发送邮件步骤

    Jenkins配置邮件步骤,以下我是以腾讯企业邮箱账号作为演示 1.配置Jenkins系统管理员邮件地址: 下拉找到以下位置 2.配置邮件通知 继续下拉,找到邮件配置.输入SMTp服务器以及邮箱后缀, ...

  2. 错误:net::ERR_BLOCKED_BY_CLIENT

    提示net::ERR_BLOCKED_BY_CLIENT错误 解决办法: 当我们查看浏览器第三方插件的时候,就会看到插件中存在“广告过滤插件”,其实,报错的原因就是第三方广告过滤插件在捣鬼, 当你关闭 ...

  3. Kubernetes 集群日志管理 Elasticsearch + fluentd(二十)

    目录 一.安装部署 Kubernetes 开发了一个 Elasticsearch 附加组件来实现集群的日志管理.这是一个 Elasticsearch.Fluentd 和 Kibana 的组合.Elas ...

  4. linux下RAR和ZIP安装和使用

    服务器没装rar,对于上传是压缩的文件来说,是个很大的问题. 源码安装rar: 1. 下载: wget http://www.rarlab.com/rar/rarlinux-x64-4.2.0.tar ...

  5. 解决Python模块报错:ModuleNotFoundError: No module name 'StringIO'

    下面是我在学习中遇到的问题,给大家分享一下:   ''' 这里是测试代码 '''# coding = utf-8from selenium import webdriverfrom selenium. ...

  6. 09 Servlet相关知识点---学习笔记

    1.概念:运行在服务器端的小程序 Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则.将来我们自定义一个类,实现Servlet接口,复写方法. 2.快速入门:(1)创 ...

  7. [转帖]FastDFS图片服务器单机安装步骤

    FastDFS图片服务器单机安装步骤 https://www.cnblogs.com/yuesf/p/11847103.html 前面已经讲 一张图秒懂微服务的网络架构,通过此文章可以了解FastDF ...

  8. day45——html常用标签、head内常用标签

    day45 MySQL内容回顾 数据库 DBMS mysql -RDBMS 关系型 数据库分类 关系型:mysql\oracle\sqlserver\access 非关系型:redis,mongodb ...

  9. [NOIP2018 PJ T4]对称二叉树

    题目大意:问一棵有根带权二叉树中最大的对称二叉树子树,对称二叉树为需满足将这棵树所有节点的左右子树交换,新树和原树对应位置的结构相同且点权相等. 题解:在对称二叉树中,对于深度相同的两个节点$u,v$ ...

  10. VS 引用dll版本冲突问题

    1.删除项目中的对应引用: 2.如果是有用到NetGet引用的删除项目中的packages里面的对应包文件: 3.如果是在NetGet中引用的注释项目中packages.config对应的插件名: 4 ...