一个数是不是质数,就是判断一个数除了1和它本身还有没有其他的约数,如果有则是合数,否则是质数.其实本质都是求公约数. 求公约数是什么思路呢,就是找比它小的数不断尝试,能被整除则是其约数,否则继续尝试,直到确定所有数都找遍.本着这个思路,求公约数的算法如下: public static List<long> GetGYS(long num) { ) }; ,num}; ,end=num/temp; while(temp<end){ ) list.Add(temp); temp++; end…
class Fib(object):    def __call__(self,n):        a=[0,1]        for i in range(n-2):            an=a[-2]+a[-1]            a.append(an)        return a f = Fib()print f(10) class Fib(object): def __call__(self, num): a, b, L = 0, 1, [] for n in rang…
除了分解质因数,还有另一种适用于求几个较小数的最大公约数.最小公倍数的方法 下面是数学证明及算法实现 令[a1,a2,..,an] 表示a1,a2,..,an的最小公倍数,(a1,a2,..,an)表示a1,a2,..,an的最大公约数,其中a1,a2,..,an为非负整数.对于两个数a,b,有[a,b]=ab/(a,b),因此两个数最小公倍数可以用其最大公约数计算.但对于多个数,并没有[a1,a2,..,an]=M/(a1,a2,..,an)成立,M为a1,a2,..,an的乘积.例如:[2,…
题意: 给出一个N 求N有多少个别的进制的数有后导零 解析: 对于一个别的进制的数要转化为10进制 (我们暂且只分析二进制就好啦) An * 2^(n-1) + An-1 * 2^(n-2) + ``````+ A1 * 2^1  +  A0 * 2^0  = N 因为有后导零 我们暂且只看有一个后导零的情况  即A0 = 0 那么  2 * ( An * 2^(n-2) + An01 * 2^(n-3) + `````` + A1) = N 即  An * 2^(n-2) + An-1 * 2…
算法笔记(c++)--求一个数的所有质数因子 先贴题目: 这题不难,恶心在理解上面.最后看评论知道了怎么回事: 2*2*3*3*5=180 按照这逻辑的话应该输入的数由一系列质数相乘出来,所以每次找到一个质数就要更新下输入数.. 问题1: 没问题的话一瞬间都是这么想的.更新后重新来一遍for.重新探索一遍质数.但是仔细想想,题目要求从小到大,能2*3*2就一定能2*2*3,不如每次找到一个质数因子的时候,循环更新输入数. 解决如下 while(num%质数因子==0) num=num/质数因子.…
php实现求一个数的质数因子 一.总结 一句话总结:这么简单的题目,还是把变量定义的位置和自增的位置写错. 1 <?php 2 $num=trim(fgets(STDIN)); 3 //如果$num大于1 4 $i=2; 5 while($num>1){ 6 while($num%$i==0){ 7 echo $i.' '; 8 $num=$num/$i; 9 } 10 $i++; 11 } 12 13 ?> 二.质数因子 题目描述 功能:输入一个正整数,按照从小到大的顺序输出它的所有质…
D - Disjoint Set of Common Divisors Problem Statement Given are positive integers AA and BB. Let us choose some number of positive common divisors of AA and BB. Here, any two of the chosen divisors must be coprime. At most, how many divisors can we c…
给出一个完全二叉树,求出该树的节点个数. 说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置.若最底层为第 h 层,则该层包含 1~ 2h 个节点. 示例: 输入: 1 / \ 2 3 / \ / 4 5 6 输出: 6 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left;…
1.题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少对? (1)程序分析:不难发现兔子的规律是:1,1,2,3,5,8,13,21.... 其实这个问题也就是求斐波那契数列的问题. (2)思路:应用递归来实现.1,2月的时候总数为一对,从第三个月开始就会产生一个新兔子,总数为2对,也就是born(n-1)+born(n-2) (3)代码实现: /** * 题目:古典问题:有一对兔子,从出生后第3个月…
Given two integers L and R, find the count of numbers in the range [L, R] (inclusive) having a prime number of set bits in their binary representation. (Recall that the number of set bits an integer has is the number of 1s present when written in bin…