博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法之数学--二分快速幂,分解素因数2021-03-09(未完待续)
阅读量:4101 次
发布时间:2019-05-25

本文共 997 字,大约阅读时间需要 3 分钟。

1.分解质因数

质因数个数

题目描述

Time Limit: 1000 ms

Memory Limit: 32768 mb
求正整数N(N>1)的质因数的个数。 相同的质因数需要重复计算。如120=22235,共有5个质因数。

输入描述:

可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9)。

输出描述:

对于每组数据,输出N的质因数的个数。

代码

#include 
using namespace std;const int maxn = 1000000+5;int prime[maxn];void getPrim(){
memset(prime,0,sizeof(prime)); for(int i = 2;i<=maxn;i++){
if(!prime[i]) prime[++prime[0]] = i; for(int j = 1;j<=maxn&&prime[j]*i<=maxn;j++){
prime[prime[j]*i] = 1; if(i%prime[j]==0) break; } }}int main(){
getPrim(); int n; while (scanf("%d",&n)!=EOF){
int ans = 0; for(int i = 1;i
1) ans++; printf("%d\n",ans); } return 0;}

整除问题

题目描述

Time Limit: 1000 ms

Memory Limit: 256 mb
给定n,a求最大的k,使n!可以被a^ k整除但不能被a^(k+1)整除。

输入描述:

两个整数n(2<=n<=1000),a(2<=a<=1000)

输出描述:

一个整数.

思路

这个题首先如果数字小的话是可以考虑轮流试的,但是1000的数字范围无论是对阶乘还是幂都太大了。于是我们想一下,既然要求整除,说明每个素因子都是可以抵消的,这样我们就可以求解了。但是还要考虑到,因为后面是求哪个k,所以说我们不是对n!和a的幂分别求出对应的素数因子数组。我采取的方法是这样的:

1、分解得到n!的素数数组。
2、求出a的素数数组
3、求两者的商去最小值

代码

在这里插入代码片

2.

转载地址:http://hpzsi.baihongyu.com/

你可能感兴趣的文章
Java编程基础:抽象类和接口
查看>>
Java编程基础:异常处理
查看>>
Spring MVC中使用Thymeleaf模板引擎
查看>>
Spring处理表单提交
查看>>
Spring MVC异常处理
查看>>
Leetcode 1180. Count Substrings with Only One Distinct Letter [Python]
查看>>
PHP 7 的五大新特性
查看>>
php实现socket(转)
查看>>
PHP底层的运行机制与原理
查看>>
深入了解php底层机制
查看>>
PHP中的stdClass 【转】
查看>>
XHProf-php轻量级的性能分析工具
查看>>
PHP7新特性 What will be in PHP 7/PHPNG
查看>>
比较strtr, str_replace和preg_replace三个函数的效率
查看>>
ubuntu 下编译PHP5.5.7问题:configure: error: freetype.h not found.
查看>>
PHP编译configure时常见错误 debian centos
查看>>
configure: error: Please reinstall the BZip2 distribution
查看>>
OpenCV gpu模块样例注释:video_reader.cpp
查看>>
【增强学习在无人驾驶中的应用】
查看>>
OpenCV meanshift目标跟踪总结
查看>>