1 #include 2 int main() 3 { 4 int a; 5 printf("输入一个数,程序将给出它的质数分解。\n"); 6 scanf("%d",&a); 7 printf("a="); 8 int i=2; 9 while(...
分类:
其他好文 时间:
2015-04-16 01:12:49
阅读次数:
154
求 n! 的计算结果 有几个后缀0.
可以发现,一个5和一个2的乘积,可以获得一个0.
考虑10! :
10! = 362880 有两个后缀0. 这是因为这10个连乘数里,有5和10, 它们分解质因数后可以获得2个5.
注:我们前面提到一个5和一个2的乘积,容易想到的,将这么多的连乘数分解质因数,2的数量是远大于5的数量的
考虑25! :
这里的5, 10, 15, 20, 25可以分解出6个5, 所以25!应该有6个后缀0....
分类:
其他好文 时间:
2015-04-13 12:57:01
阅读次数:
163
任何数在计算机内部都是用二进制表示的,可以用这个特性来快速判断N!的二进制表示中最低位1的位置。解法一:将一个数的二进制数除以2,若二进制数的末尾是0,则能整除,否则不能整除。因此,求N!的二进制表示中最低位1的位置即为求N!中有多少个质因数2以下为代码1:#include<..
分类:
其他好文 时间:
2015-04-11 11:56:30
阅读次数:
105
因为n!是一个非常大的数,所以不能通过常规的方法,求出n!的值之后,再判断它的末尾有多少个0.这里的关键就是,n!的末尾有多少个0,取决于n!中,质因数5的个数。如:12!=479001600,其中,5、10各含有1个质因数5,所以12!末尾有2个0代码1:#include<iostream>
usingnamesp..
分类:
其他好文 时间:
2015-04-11 11:53:54
阅读次数:
108
题意:求一个整数的阶乘的尾数0的个数。分析:**方法一:**对n!做质因数分解n!=2x?3y?5z?...n!=2^x*3^y*5^z*... 显然0的个数等于min(x,z)min(x,z),并且min(x,z)==zmin(x,z)==z,也就是5的幂指数。
证明:
对于阶乘而言,也就是N!=1?2?3?...?nN!=1*2*3*...*n
[n/2]>[n/5][n/2] > [n/...
分类:
其他好文 时间:
2015-04-07 12:04:06
阅读次数:
108
以下是四种用java语言编程实现的求最大公约数的方法:
package gcd;
import java.util.ArrayList;
import java.util.List;
public class gcd {
public static void main(String[] args) {
long startTime;
long endTime;
long dur...
分类:
编程语言 时间:
2015-03-31 10:59:43
阅读次数:
261
题解:
我们发现把一个数分解质因数以后然后可以根据每种质因数的个数算出这个数的约数和。所以我们可以暴力拆解每个数,根号时间复杂度分解。
就是枚举每种质数它用了多少,然后这个数除一下再往下一层深搜。
代码:
#include
#include
#include
#include
#define N 50100
using namespace std;
int prime[N],cnt...
分类:
其他好文 时间:
2015-03-28 10:14:14
阅读次数:
160
题目大意给出一个数k,求第k个不是完全平方数个数的数字(这里的完全平方数并不包括1)。思路首先介绍一下莫比乌斯函数(Möbius):
μ(x)=? ? ? ? ? ? ? 1(?1) k 0 x=1能分解成k个不同的质因数的乘积其他情况 \mu(x)=\left\{
\begin{aligned}
&1&x = 1 \&(-1)^k&能分解成k个不同的质因数的乘积\&0&其他情况
\...
分类:
其他好文 时间:
2015-03-27 22:18:23
阅读次数:
195
【思路】:先打表,后循环。
【AC代码】:
#include
#include
#include
#include
#include
using namespace std;
#define MAX 10000
int prime_list[MAX], cnt = 0;
int isPrime(int n)
{
int i = 0;
for (i = 2; i <= sqr...
分类:
其他好文 时间:
2015-03-19 23:58:45
阅读次数:
481
一、描述
1、将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,输出之前的所有因子。
(2)如果n!=k,但n能被k整除,则应打印出k的值,并用n除以k的商作为新的正整数n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为...
分类:
编程语言 时间:
2015-03-19 18:23:36
阅读次数:
194