约数

您所在的位置:网站首页 约数数量 约数

约数

2024-07-12 12:21| 来源: 网络整理| 查看: 265

一、定义

若整数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