互质数

light chaser 2019/12/5

拈花ヽ惹草 提交于 2020-01-13 13:34:49
话说自己写的文字不是会印象深刻吗 打字和手写差别还挺大呢...... 这题我写的好 题意:输出分子分母和为n的最大的最简分数(分子分母互质) 他:暴力 for (int i = n / 2 ; i >= 1; i--) if (__gcd(i, n - i) == 1) { cout << i << ' ' << n - i << endl; break; } 我: if(n&1) cout<<n/2<<" "<<n-n/2; else { if((n/2)&1) cout<<n/2-2<<" "<<n/2+2; else cout<<n/2-1<<" "<<n/2+1; } //有一些结论: 三个数,只要这三个数中有两个数是奇数一个是偶数,最小公倍数就是这三个数的积。 互为质数的一些推论: 1. 相邻的两个奇数一定是互质数。如:5和7、75和77是互质数。 2. 两个数中的较大一个是质数,这两个数一定是互质数。如:3和19、16和97是互质数。 3. 1和其他所有的自然数一定是互质数。如:1和4、1和13是互质数。 4. 较大数比较小数的2倍多1或少1,这两个数一定是互质数。如:13和27、13和25是互质数。 5. 两个数中的较小一个是质数,而较大数是合数且不是较小数的倍数,这两个数一定是互质数。如:2和15、7和54是互质数。 哈哈哈哈哈哈哈 题意:l左撇子,r右撇子

数论中的互质数的最大不能组合数

你说的曾经没有我的故事 提交于 2019-12-20 04:28:02
题意:给定A和B,A和B互质,求最大不能组合数,和不能组合数的个数。 基础知识: Gcd(A, B) = 1 → Lcm(A, B) = AB 剩余类,把所有整数划分成m个等价类,每个等价类由相互同余的整数组成 任何数分成m个剩余类,分别为 mk,mk+1,mk+2,……,mk+(m-1) 分别记为{0(mod m)},{1(mod m)}…… 而n的倍数肯定分布在这m个剩余类中 因为Gcd(m,n)=1,所以每个剩余类中都有一些数是n的倍数,并且是平均分配它的旁证,可见HDOJ 1222 Wolf and Rabbit 设 kmin = min{ k | nk ∈ {i (mod m)} }, i ∈ [0, m) 则 nkmin 是{i (mod m)}中n的最小倍数。特别的,nm ∈ {0 (mod m)} nkmin 是个标志,它表明{i (mod m)}中nkmin 后面所有数,即nkmin + jm必定都能被组合出来 那也说明最大不能组合数必定小于nkmin 我们开始寻找max{ nkmin } Lcm(m, n) = mn,所以很明显(m-1)n是最大的 因为(m-1)n是nkmin 中的最大值,所以在剩下的m-1个剩余类中,必定有比它小并且能被m和n组合,这些数就是(m-1)n -1,(m-1)n -2,……,(m-1)n -(m-1) 所以最大不能被组合数就是(m

算法训练 最大最小公倍数

你。 提交于 2019-12-11 02:22:37
算法训练 最大最小公倍数 @蓝桥杯 算法训练 ALGO-2 问题描述 已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。 输入格式 输入一个正整数N。 输出格式 输出一个整数,表示你找到的最小公倍数。 样例输入 9 样例输出 504 数据规模与约定 1 <= N <= 106。 规律题 这数据约定从1开始就离谱 最小公倍数不会大于参与组织公倍数关系的数的乘积。 所以这道题: 理想情况下就是找出最大的一组互质数。 摘自 百度百科 (2)两个连续的自然数一定是互质数。如:4和5、13和14是互质数。 (3)相邻的两个奇数一定是互质数。如:5和7、75和77是互质数。 如果输入 n ( n为奇数 ),那么 n × (n - 1) × (n - 2) 便是该题的解 如果输入 n ( n为偶数 ), 那么 n × (n - 2) × (n - 3) 便是该题的解 这个时候 (n - 3) - n = 3 ,当 n 为 3 的倍数( 并且为偶数 ),其中两数存在公共因子 3 ,其他的就不说了,免得误人子弟,总之看代码明白是个什么贪法了。。。 源码: import java . util . Scanner ; public class Main { public static void main ( String [ ] args ) { Scanner sc =