分解质因数FZU - 1075
题目简述:就是给一个数,把他拆分成多个素数的乘积,这正好是算术基本定理。本题我的解决方法是埃氏素数筛+质因数保存。。。开始T掉了,是因为我在最后枚举了素数,保存他们的次数,然后两次for去查询他们的次数这样需要遍历前面所有素数。显的十分浪费时间,因为如果给的数非常大,并且次数小的次数很多那么我们外面的第一层FOR就是N第二层是一个遍历内部次数输出也达到挺大程度(素数小的并且多的化N*M会很大)加上T的话很可能会超时,其实直接保存质因数在另一个素数就可以了,然后遍历输出即可(在此警醒自己,做题不要拿着题目就开做直接暴力,要精简算法的复杂程度,理清思路,这样避免后面来改动)
算术基本定理可表述为:任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积
最后上代码
1 #include<iostream> 2 #include<stdio.h> 3 #include<string.h> 4 using namespace std; 5 const int MAXN=65536; 6 bool isPrim[MAXN]; 7 int prime[MAXN]; 8 int cnt[MAXN]; 9 int sum,cnt1; 10 void initPrime() 11 { 12 int i; 13 memset(isPrim,0,sizeof(0)); 14 isPrim[0]=0; 15 isPrim[1]=0; 16 int k=0; 17 for (i=2; i<MAXN; i++) 18 { 19 if (!isPrim[i]) 20 { 21 prime[k++]=i; 22 int j=2; 23 while (i*j<MAXN) 24 { 25 isPrim[i*j]=1; 26 j++; 27 } 28 } 29 } 30 sum=k; 31 return; 32 } 33 void sovl(int x) 34 { 35 for (int i=0; ; i++) 36 { 37 if (prime[i]>x)break; 38 while (x % prime[i]==0) 39 { 40 cnt1++; 41 cnt[cnt1]=prime[i]; 42 x=x/prime[i]; 43 } 44 } 45 return; 46 } 47 int main() 48 { 49 initPrime(); 50 int t,num,time; 51 scanf("%d",&t); 52 while (t--) 53 { 54 memset(cnt,0,sizeof(cnt)); 55 scanf("%d",&num); 56 time=0; 57 cnt1=0; 58 sovl(num); 59 for (int i=1; i<=cnt1; i++) 60 { 61 time++; 62 if (time==1) 63 { 64 printf("%d",cnt[i]); 65 } 66 else 67 printf("*%d",cnt[i]); 68 } 69 printf("\n"); 70 } 71 return 0; 72 }
转载于:https://www.cnblogs.com/bluefly-hrbust/p/8946762.html
分解质因数FZU - 1075相关推荐
- C语言,分解质因数一个解法!_只愿与一人十指紧扣_新浪博客
题目内容: 每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数.比如,6可以被分解为2x3,而24可以被分解为2x2x2x3. 现在,你的程序要读入一个 ...
- 阶乘分解质因数[经典题组合数学枚举质因子]
引入问题: 给定整数NNN,试把阶乘 N!N!N! 分解质因数,按照算术基本定理的形式输出分解结果中的 pip_ipi 和 cic_ici即可. N!N!N!分解质因数后的结果,共若干行,每行一对 ...
- 【数学专题】 筛质数、分解质因数和快速幂
筛质数 质数筛法分为埃氏筛和线性筛. 埃氏筛没有线性筛时间复杂度好,不常用,但是他的时间复杂度分析方法却比较常用. 埃氏筛的时间复杂度为O(nloglogn)≈O(n)O(nloglogn)≈O(n) ...
- 【c语言】分解质因数
将一个正整数N(1<N<32768)分解质因数.例如,输入90,打印出90=233*5. 样例输入 66 样例输出 66=2311 #include <stdio.h> int ...
- java求最大公约数(分解质因数)
下面是四种用java语言编程实现的求最大公约数的方法: package gcd;import java.util.ArrayList; import java.util.List;public cla ...
- 负数分解质因数java_Java经典案例之-“分解质因数”
/** * 描述:将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. * 分析: * 对n进行分解质因数,应该先找到一个最小的质数k,然后按照下列步骤进行: * (1)如果这个质数恰 ...
- python【蓝桥杯vip练习题库】ADV-359分解质因数
试题 算法提高 分解质因数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个正整数n,尝试对其分解质因数 输入格式 仅一行,一个正整数,表示待分解的质因数 输出格式 仅一行, ...
- python【蓝桥杯vip练习题库】BASIC-16分解质因数(数论 质数分解)
试题 基础练习 分解质因数 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 求出区间[a,b]中所有整数的质因数分解. 输入格式 输入两个整数a,b. 输出格式 每行输出一个数的分解 ...
- 求助matlab分解质因数,Matlab
Since Apr.6th,2016 linspace:产生一系列整数.linspace(a, b, c)产生的数 x 范围为 a≤x≤b ,总数为 c . 注意和 a:b:c的区别,a:b:c中 c ...
- C语言经典例14-将一个正整数分解质因数
目录 1 题目 2 分析 3 实现 4 运行结果 1 题目 将一个正整数分解质因数.例如:输入909090,打印出 90=2∗3∗3∗590 = 2 * 3 * 3 * 590=2∗3∗3∗5 2 分 ...
最新文章
- java 值对象_java 中设计模式(值对象)的实例详解
- 别再说程序员不懂时尚
- Go语言接口(interface)简单应用
- IOS学习之路七(使用 Operation 异步运行任务)
- C#使用Xamarin开发可移植移动应用进阶篇(9.混淆代码,防止反编译)
- matlab实现三次样条插值
- 三问Spring事务:解决什么问题?如何解决?存在什么问题?
- chrome和火狐获取资源
- 用户登录功能:说简单也困难
- 关于LAMP配置Let’s Encrypt SSL证书
- 全国计算机应用考试试卷,全国信息化计算机应用技术水平教育考试试卷
- Maven—Eclipse设置Maven项目JDK版本
- [工具] Sublime Text 使用指南
- redux-chunk中间件的安装和使用-(二)
- 计算流体力学c语言教程,计算流体力学教程
- miui9如何不自动杀进程,小米9怎么关闭自动更新 具体操作方法解析
- electron 自定义标题栏_如何在Electron Framework中创建自定义标题栏(灵感来自Visual Studio Code标题栏)...
- vue:无法加载文件..
- A graph auto-encoder model for miRNA-disease associations prediction 论文解析
- 现在公司都不缺人了?软件测试工作经历3年,面试居然被坑了....