1.最大公约数,最小公倍数
import java.util.Scanner;
/**
* 这里讲解一下求解最大公约数和最小公倍数 辗转相处法求最大公约数:
* 思路:
* 1.大数对小数取余(如果余数为0,跳到3)
* 2.小数成为大数,余数作为小数(跳到1)
* 3.小数就是最大公约数
* @author 王孙悟空
* 最大公约数的求法如下函数f所示,这里只列出的递归算法
* 最大公倍数为两个数的乘积除以最大公约数
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt(), b = sc.nextInt();
int gy = f(a, b);
//输出最大公约数
System.out.println(gy);
//输出最小公倍数
System.out.println((a*b)/gy);
}
/**
* 辗转相除法求最大公约数
* @param a 假定较大值
* @param b 假定较小值
* @return 最大公约数
*/
private static int f(int a, int b) {
if (a % b == 0)
<span style="white-space:pre"> </span>return b;
return f(b, a % b);
}
}
2. 取模
(a + b ) % p = ( a % p + b % p) % p
(a * b) % p = (a % p) * (b % p) % p
3. 素数筛法
/**
* 素数筛法
* 计算第100002个素数
* @author 王孙悟空
*
*/
public class Main {
public static void main(String[] args) {
int N = 1000 * 1000 * 10;
int x = 100001;
byte[] a = new byte[N];
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 = 0; i < a.length; i++) {
if(a[i]==0){
m++;
if(m==x)System.out.println(i+" ");
}
}
}
}