PAT甲级-质因子分解类型-1059 Prime Factors解题思路

news/2024/7/23 8:55:18 标签: 算法

1059 Prime Factors (25 分)

在这里插入图片描述

思路

首先建立质数表,int大概在10的9次方内,开根号也就10的5次方,所以取10的5次方以内的质数即可,因为如果10的5次方内的数除不尽,除以10的5次方外面的数也不可能除尽,说明该数就是质数,直接输出即可,也可提前判断输出。

其实还要考虑一种情况2*一个非常大的素数,这题的测试点没有,应该判断最后剩下的是否不是1,不是1说明是一个大素数,应该再乘上它。

代码

#include<bits/stdc++.h>
using namespace std;

bool isPrime(int n)
{
    if(n<=1)return false;
    int sqr =(int)sqrt(n);
    for (int i=2;i<=sqr;i++)
        if (n%i==0) return false;
    return true;

}
int main(){
    int n;
    cin>> n ;
    int start = n;
    int Prime[10005];
    int use[10005]={0};
    int num=0;
    for(int i=2;i<10005;i++)
        if(isPrime(i))
            Prime[num++] = i;
    
    int sqr =(int)sqrt(n);
    int max = 0;

    
    for(int i = 0;i<= num;i++)
    {
        if(n==1)break;
        //if(Prime[i] > num)break;
        while(n%Prime[i] == 0)
        {
            max = Prime[i];
            use[i]+=1;
            n/=Prime[i];
        }
    }
    
    if(start == 1){cout<<"1=1"<<endl;return 0;}
    if(isPrime(start)){cout<<start<<"="<<start<<endl;return 0;}
    cout<<start<<"=";
    for(int i =0;i<=num;i++)
    {
        if(Prime[i]==max)
        {    if(use[i]==1)
                {cout<<Prime[i]<<endl;break;}
            else if(use[i]>1)
                {printf("%d^%d",Prime[i],use[i]);break;}}
        if(use[i]==1)
            printf("%d*",Prime[i]);
        else if(use[i]>1)
            printf("%d^%d*",Prime[i],use[i]);

    }
}

http://www.niftyadmin.cn/n/1447346.html

相关文章

佳伦-游易网红擎网络营销案例研讨(三)(转)

首发&#xff1a;红擎seo案例研讨www.hongqing.org&#xff0c;佳伦网站运营 http://www.gallonwang.com 本期案例游易网与芒果网类似&#xff0c;都是在线航空旅行服务&#xff0c;只不过一个是侧重机票一个是侧重旅游。红擎小组有很多的SEO高手&#xff0c;所以本期笔者以网络…

SecureCRT乱码问题解决方法

环境&#xff1a;SecureCRT登陆REDHAT5.3 LINUX系统 问题&#xff1a;vi编辑器编辑文件时文件中的内容中文显示乱码&#xff0c;但是直接使用linux系统terminal打开此文件时中文显示正常&#xff0c;确诊问题出现在客户端即SecureCRT的显示问题 解决方法&#xff1a; 1、修改远…

Pivotal中国研发中心祝您圣诞快乐!

不管您此时身在何处&#xff0c;正与谁共庆节日&#xff0c;Pivotal中国研发中心祝愿您圣诞快乐&#xff01; Wherever you are and whomever you’re celebrating with, all of us at Pivotal wish you a joyous and peaceful holiday season, and a new year full of surpris…

深入hellogui.app(转)

上次只是简单的说明了GUI程序的结构&#xff0c;没有深入到具体代码和程序流程。本篇将深入介绍。 hellogui包含以下文件&#xff1a;Hellogui.cpp DLL 入口点HelloguiAppliction.cpp 创建新的Document&#xff0c;定义应用程序UIDHelloguiAppliction.hHelloguiDocument.cpp 代…

Codeforces 466A Cheap Travel(水题)

题目链接&#xff1a;Codeforces 466A Cheap Travel 题目大意&#xff1a;坐n次地铁&#xff0c;m张票卖b元&#xff0c;单张a元&#xff0c;问最小花费。 解题思路&#xff1a;水题。 #include <cstdio> #include <cstring> #include <algorithm>using nam…

redis 相关

2019独角兽企业重金招聘Python工程师标准>>> 一、安装redis 1、下载redis包 wget http://download.redis.io/releases/redis-3.2.1.tar.gz 2、解压redis包到/opt下 tar -zxvf /home/redis-3.2.1.tar.gz -C /opt 3、安装并测试redis cd /opt/redis-3.2.1/src make &a…

TypeScript 从入门到精通:打造可靠、高效的现代 JavaScript

引言 TypeScript作为一种静态类型的编程语言&#xff0c;可以显著改善JavaScript项目的可维护性、可读性和开发效率。本篇博客将带你从入门到精通TypeScript&#xff0c;探索其强大的特性和用法。我们将深入了解基本类型和变量声明、函数和类、模块和命名空间等核心概念&#…

PAT甲级-不定长vector、stl类型-1039 Course List for Student解题思路

1039 Course List for Student (25 分) 思路 重点就是不定长vector的使用&#xff0c;减少内存 还有通过哈希表&#xff0c;将name转换为数字 代码 #include<bits/stdc.h> using namespace std;const int N 40010; const int M 26*26*26*101; vector<int>sele…