*题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。*分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:*(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。*(2)如果n>k,但n能被k整除,则应打印出k的值,并用n除..
分类:
编程语言 时间:
2014-09-01 02:49:12
阅读次数:
264
可以直接用高精度来暴力求。也可以不用高精度:把m分解质因数,记录每个因数和它的次数。然后计算每个因数在n的阶乘里出现了多少次,再把这个次数除以它在m中的次数,就是可能的k值。取最小的k。#include#include#include#include#include#include#include#...
分类:
其他好文 时间:
2014-08-29 21:21:28
阅读次数:
495
任何一个数分解质因数后,表达为2的x1次方 * 3的x2次方 * 5 的x3次方 等等 0的来源于2*5,x1》x2 ,所以阶乘中0的个数为5的个数,下面就很简单了。http://acm.nyist.net/JudgeOnline/problem.php?pid=84 import ja...
分类:
其他好文 时间:
2014-08-15 01:15:06
阅读次数:
249
今天看了Prufer数列这个东西。每一个Prufer数列和无根树是一一对应的。所以求出有多少符合要求的Prufer数列即可。点i在Prufer数列中的出现次数为i的度数 - 1。代码如下:【用分解质因数的方法,避免了高精除】#include #include #include #include #i...
分类:
其他好文 时间:
2014-08-12 13:11:24
阅读次数:
188
#includeusing namespace std;int isPrime(int);int main(){ int n; cout>n; cout<<n<<"="; for(int i=1;i<=n;i++) { if(n%i==0) ...
分类:
其他好文 时间:
2014-08-11 17:37:52
阅读次数:
241
筛法求素数,寻找素数最经典快速的方法!!!
用筛法求素数的基本思想是:
把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。如有:
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29...
分类:
其他好文 时间:
2014-08-06 23:01:02
阅读次数:
212
Smith Numbershttp://poj.org/problem?id=1142 1 #include 2 int fac[128]; 3 int find_fac(int n){//对n分解质因数,返回质因数个数 4 int cnt=0; 5 for(int i=2;i*i1...
分类:
其他好文 时间:
2014-08-04 10:52:07
阅读次数:
295
Prime Testhttp://poj.org/problem?id=1811 1 #include 2 #include 3 using namespace std; 4 typedef __int64 LL; 5 LL mulmod(LL a,LL b,LL c) { //ret=(...
分类:
其他好文 时间:
2014-08-03 20:18:15
阅读次数:
245
这是SGU 102的一份题解题目要求找不大于N的自然数中与N互质的数,N的范围是1到10000. 由于N的范围小,可以用直接枚举的方法做,辗转相除求GCD。 但要考虑特殊情况:N=1时,1和它本身互质。 如果数据范围变大,如10^9,则不能用枚举。用分解质因数的方法做。用唯一分解定理: n>=2,设...
分类:
其他好文 时间:
2014-07-29 21:06:32
阅读次数:
233
分解质因数算法 1.从N开始递减,找到满足 : n%i ==0 && n是素数 -> result2.存result到数组,递归执行(n/result)var result = new Array();
var factor = function f(n){
if(n == 1){return ;}
var n1 = n;
while(n1>1){
if(isPrime(n1) && n ...
分类:
其他好文 时间:
2014-07-04 07:21:41
阅读次数:
237