约数 |
您所在的位置:网站首页 › 约数数量 › 约数 |
一、定义
若整数n除以整数d的余数为0,即d能整除n,则称d是n的约数,n是d的倍数,记为d|n。 算数基本定理的推论 一个大于1的正整数N,如果它的标准分解式为: 那么它的正因数个数为 它的全体正因数之和为 AcWing 869. 试除法求约数 给定n个正整数ai,对于每个整数ai,请你按照从小到大的顺序输出它的所有约数。 输入格式 第一行包含整数n。 接下来n行,每行包含一个整数ai。 输出格式 输出共n行,其中第 i 行输出第 i 个整数ai的所有约数。 数据范围 1≤n≤100, 2≤ai≤2∗109 输入样例: 2 6 8输出样例: 1 2 3 6 1 2 4 8众所周知,除了可能有一对同样的数相乘等于x以外,其余的一对约数一个小于sqrt(x)、一个大于sqrt(x) 优化思路: a|n a为n的约数, 那么 n/a|n ,n/a也是n的约数 并且一个数的因数的成对出现,大于sqrt(n)的因数只有一个。 反证:若大于sqrt(n)的因数有两个,sqrt(n)*sqrt(n)已经大于n,就矛盾了(因为一个数的因数不可能大于n) 所以只需1 ~ sqrt(n) 找约数即可 #include #include #include using namespace std; vector get_divisors(int x) { vector res; for (int i = 1; i > n; while (n -- ) { int x; cin >> x; auto res = get_divisors(x); for (auto x : res) cout |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |