求一正整数约数的个数

这个问题存很有意思,因为用到了一个性质,就是: 设正整数 i, n。 若 i 是 n 的约数,那么 n / i 也必是 n 的约数。

由此可见,约数都是成对出现的,所以只需要枚举到 √n 就可以,因为大于 √n 的那些约数就是前面提到的 n / i。

所以,只需要枚举 √n 之前的数,并在统计后乘 2 就解决了。

另外说一点,打出『√』的组合键是 option + v

时间: 2024-11-07 18:21:39

求一正整数约数的个数的相关文章

NYOJ 90 —— 求n划分为若干个正整数的划分个数

整数划分 时间限制:3000 ms  |  内存限制:65535 KB 描述 将正整数n表示成一系列正整数之和:n=n1+n2+…+nk, 其中n1≥n2≥…≥nk≥1,k≥1. 正整数n的这种表示称为正整数n的划分.求正整数n的不 同划分个数. 例如正整数6有如下11种不同的划分: 6: 5+1: 4+2,4+1+1: 3+3,3+2+1,3+1+1+1: 2+2+2,2+2+1+1,2+1+1+1+1: 1+1+1+1+1+1.  输入 第一行是测试数据的数目M(1<=M<=10).以下每

高效率求约数的个数

高效率求约数的个数 求约数的个数方法有很多,你可以使用O(n)的方法来遍历看是否为约数,更可以使用复杂度的算法从1~来判断个数,但是在这里我们给出的是一种稍快于的方法,大概节省2/3左右的时间. 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1000) 接下来的1行包括N个整数,其中每个数的范围为(1<=Num<=1000000000) 当N=0时输入结束. 输出: 可能有多组输入数据,对于每组输入数据, 输出N行,其中每一行对应上面

约数的个数

约数的个数 Description mmoaay小侄子今年上初中,老师出了一道求约数个数的题目,比如8的约数有1,2,4,8共4个. 当数比较小的时候可以人工算,当n较大时就难了. mmoaay嫌麻烦,现在让你编个程序来算. Input 一行一个整数.最后以0结束. Output 分别求出这些整数的约数个数,最后的0不用处理. Sample Input 81000 Sample Output 4 9 题解:求正整数378000共有多少个正约数? 解:将378000分解质因数378000=2^4×

NYOJ 651 —— n划分为2个以上不同正整数的划分个数

Cut the rope 时间限制:1000 ms  |  内存限制:65535 KB 描述 We have a rope whose length is L. We will cut the rope into two or more parts, the length of each part must be an integer, and no two parts have the same length. Your task is to calculate there exists ho

Acdream1084 寒假安排 求n!中v因子个数

题目链接:点击打开链接 寒假安排 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 128000/64000 KB (Java/Others) SubmitStatistic Next Problem Problem Description 寒假又快要到了,不过对于lzx来说,头疼的事又来了,因为众多的后宫都指望着能和lzx约会呢,lzx得安排好计划才行. 假设lzx的后宫团有n个人,寒假共有m天,而每天只能跟一位后宫MM约会,并且由于后宫

hdu1492(一个数的所有humber bunber的约数的个数)

题目意思: 求一个数的所有humber bunber的约数的个数 http://acm.hdu.edu.cn/showproblem.php?pid=1492 题目分析: 求出2,3,5,7的所有个数,用他们能组合出多少的数,就是n的Humber number数 AC代码: /** *类似求素数的个数每一个数都可以表示成一些素数的乘积 *对于给定的n,需要求出n包含多少的2,3,5,7;用这些个数相乘即为n的Humber number */ #include<iostream> #includ

九度OJ 1087 约数的个数

题目1087:约数的个数 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6056 解决:1838 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1000) 接下来的1行包括N个整数,其中每个数的范围为(1<=Num<=1000000000) 当N=0时输入结束. 输出: 可能有多组输入数据,对于每组输入数据, 输出N行,其中每一行对应上面的一个数的约数的个数. 样例输入: 5 1 3 4 6 12 样例输出: 1 2 3

求二进制数中1的个数(编程之美)

求二进制数中1的个数 继京东618店庆时买的<编程之美>这本书,翻了翻,发现里面的题还是挺有意思的,看起来我们觉得很简单的题目,解法却有很多很多种,真是一个比一个巧妙,于是,决定记录一下. 书中的题目如下 对于一个字节(8bit)的无符号数,求其二进制表示中"1"的个数,要求算法的执行效率尽可能高. 就像书中给我们说的一样,我们一般人可能想到的解决方法如下 int countOne(int n){ int count=0; while(n){ if(n%2==1){ cou

求100内质数的个数

// 求100内质数的个数 非容斥 #include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #include<cmath> #include<cstring> using namespace std; int n,sum; int main() { scanf("%d",&n); for(int i=1;i<=