辅导资料 整数的基本性质与应用(最大公约数 最小公倍数 素数 )
2018-02-14 14:44
369 查看
一、最大公约数:
1.(不适用于long类型的数据)
代码:
2.辗转相除法
3.递归法
二、最小公倍数
三、a的n次幂
四、素数(筛子法)
1.(不适用于long类型的数据)
代码:
package sf_1; public class Main { //求最大公约数 public static void main(String[] args) { /* * 求a和b的最大公约数 * 则从可能 的数a开始一直到1. * 既能把a整除,又能把b整除,则为最大公约数。 */ int a=15; int b=40; for(int i=a;i>=1;i--){ if(a%i==0&&b%i==0){ System.out.print(i); break; } } }
2.辗转相除法
package sf_2; public class Main { /* *求a和b的最大公约数 * */ public static void main(String[] args) { // TODO Auto-generated method stub /* * 辗转相除法 *有一个数字i能够a,b;那么这个数字i也可以整除b-a(假设b>a) * a=ka*i; * b=kb*i; * b-a=(kb-ka)*i; * * * 则此时[a,b]--[b-a,b](b减去1个a可以,则b减去多个a也可以)-----[b%a,a] * * [15,40]--[10,15]--[5,10]--[0,5] */ int a=15; int b=40; for(;;){ if(a==0){ System.out.print(b); break; } int temp=a; a=b%a;//较大的数字对于较小的数字取模,当作新的较小的数字 b=temp; } } }
3.递归法
package sf_3; public class Main { /** * @param args */ public static int gcd(int a,int b){ if(a==0) return b; return gcd(b%a,a); } public static void main(String[] args) { // TODO Auto-generated method stub System.out.print(gcd(15,40)); } }
二、最小公倍数
/* * 最小公倍数=(a*b)/gcd(a,b); * a=ka*i; i为最大公约数 * b=kb*i; * a*b=ka*kb*i*i ka*kb*i为最小公倍数 * */
三、a的n次幂
package sf_4; public class Main { public static int f(int n,int a,int p){ int x=1; for(int i=0;i<n;i++) x=(x*a)%p; return x; } /* * (a+b)%p=(a%p+b%p)%p; * (a*b)%p=(a%p)*(b%p)%p; */ public static void main(String[] args) { //a的n次幂 System.out.print(f(30,5,17)); } }
四、素数(筛子法)
package sf_5; public class Main { /* * 2 3 4 5 6 7 8 9 10 11 12 13...... * 2 3 _ 5 _ 7 _ 9 _ 11 _ 13...... * 2 _ _ 5 _ 7 _ _ _ 11 _ 13...... * .............. */ public static void main(String[] args) { int N=1000*1000*10; int x=10001; byte[] a=new byte ; for(int i=2;i<N/2;i++){ if(a[i]==1)//和数没有资格参加 continue; for(int k=2;k<=N/i;k++) { if(i*k<N) a[i*k]=1; } } int m=0; for(int i=2;i<N;i++){ if(a[i]==0) { m++; if(m==x){ System.out.println(i); break; } } } System.out.print(m); } }
相关文章推荐
- C#--第2周实验--任务五--编写一个控制台应用--求两个整数的最小公倍数与最大公约数
- 约数 倍数 质数(素数) 互质 最大公约数 最小公倍数
- Java:多重循环for、while、do-while(简单判断是否是四位整数、1-100累加,水仙花、最大公约数。最小公倍数、完数、输入任意数计算每位数之和、弹力球问题)
- 输入两个正整数m和n,求其最大公约数和最小公倍数
- 输入两个正整数m和n,求其最大公约数和最小公倍数
- java中关于整数的一些操作问题--最大公约数、最小公倍数、质数等
- 最大公约数和最小公倍数及其应用(Go语言解法)
- 输入两个整数,求其最大公约数和最小公倍数
- 输入两个正整数m和n,求其最大公约数和最小公倍数
- c++上机作业7 项目二 最大公约数 最小公倍数问题 特殊三位数问题 素数数组问题
- 忙里偷闲:技术支持课上做的求两整数的最小公倍数和最大公约数
- 从键盘输入两个正整数,求它们的最大公约数和最小公倍数
- iOS 算法面试题(打印2-100之间的素数、求两个整数的最大公约数、查找字符串的位置)~demo
- 定义:整除、素数与合数、公约数和最大公约数、互素(既约)、公倍数和最小公倍数以及同余
- Java小程序:辗除法求两个正整数最大公约数和最小公倍数
- 1.4输入整数m和n,求其最大公约数和最小公倍数
- C语言实现素数,最小公倍数,最大公约数,回文数,质数,完数,水仙花数算法
- 输入两个正整数m和n,求其最大公约数和最小公倍数
- 最大公约数,最小公倍数,素数等问题
- 输入两个正整数m和n,求其最大公约数和最小公倍数