约数 python 约数是什么意思?
文章目录试除法求约数例题约数的个数约数个数定理例题约数的和约数和定理例题给定n个正整数ai,请你输出这些数的乘积的约数之和,答案对109+7取模。最大公约数(欧几里得算法)定义证明例题Python条件表达式总结约数,又称因数。整数a除以整数b(b≠0)除得的商正好是整数而没有余数,我们就说a能被b整除,或b能整除a。a称为b的倍数,b称为a的约数。在大学之前,"约数"一词所指的一般只限于正约数。约数和倍数都是二元关系的概念,不能孤立地说某个整数是约数或倍数。一个整数的约数是有限的。同时,它可以在特定情况下成为公约数。
试除法求约数算法思想:假设求n的约数,枚举1~n中的每个数i,如果n%i==0,则说明i是n的一个约数。优化:若d|n,则d是n的约数,同理(n/d)|n,则n/d也是n的一个约数,所以只需要枚举min(d,n/d)中的数,即可得到所有约数,同时注意d==n/d的情况例题给定n个正整数ai,对于每个整数ai,请你按照从小到大的顺序输出它的所有约数。
输入格式第一行包含整数n。
接下来n行,每行包含一个整数ai。
输出格式输出共n行,其中第i行输出第i个整数ai的所有约数。
数据范围1≤n≤100,2≤ai≤2×10^9输入样例:268输出样例:12361248难度:简单时/空限制:1s/64MB此处给出核心代码
defget_divisor(x):i=1res=[]whileib且r=amodb,r不为0)证明a可以表示成a=kb+r(a,b,k,r皆为正整数,且r假设d是a,b的一个公约数,记作d|a,d|b,即a和b都可以被d整除。而r=a-kb,两边同时除以d,r/d=a/d-kb/d,由等式右边可知m=r/d为整数,因此d|r因此d也是b,amodb的公约数。因(a,b)和(b,amodb)的公约数相等,则其最大公约数也相等,得证。
例题给定n对正整数ai,bi,请你求出每对数的最大公约数。
输入格式第一行包含整数n。
接下来n行,每行包含一个整数对ai,bi。
输出格式输出共n行,每行输出一个整数对的最大公约数。
数据范围1≤n≤105,1≤ai,bi≤2×109输入样例:23646输出样例:32
n=int(input())defgcd(x,y):returnxify==0elsegcd(y,x%y)foriinrange(n):a,b=map(int,input().split())print(gcd(a,b))Python条件表达式ifelse总结对于一个数来说只要掌握了其质因数和质因数个数,就相当于知道了这个数的所有性质。这对求解约数个数和约数和很有帮助。欧几里得算法,真的很简洁,以上写法中不用在乎输入的a与b的大小