1.质数:一般又称 素数,是指 只能被1和自身整除 的大于1的自然数。
2.因数:b能整除a,就说 b 是 a 的因数。
例1:线性筛选素数(比如求 1—N 的素数)
筛选步骤:
- 先将1挖掉(因为1不是素数)
- 把2的倍数的筛选出来滤掉
- 3的倍数滤掉
4不用(因为在2的时候已经滤过了)- 5的倍数也滤掉,后面同理...
- 我们这样只需要这样循环到sqrt(n)就ok了,(因为加入m不是素数,除了1和自身外至少还有两个因子,并且这两个因子一个是小于等于 sqrt(m),一个是大于等于sqrt(m),所以我们只需要判断到 m 的 sqrt(m) 就可以了。)
import java.util.Arrays;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); //求1到n之间的所有素数
int[] array = new int[n]; //定义一个数组,默认值为0,那么就把0 当作为素数,1当作合数
//0,1 不是素数
array[0] = 1;
array[1] = 1;
for(int i = 2; i < Math.sqrt(n); i++){ //从2开始
if(array[i] == 0 ){
for(int j = i*i ; j < n; j+=i){
array[j] = 1;
}
}
}
for(int x = 0 ; x < n; x++){
if(array[x] == 0){
System.out.println(x);
}
}
}
}
java中常用的Math类的方法:
- double sqrt (double n) : 返回n的平方根
- double pow (double a, double b) : 返回a的b次幂的值
- min (a , b) : 返回两个中较小的一个
- max (a , b) : 返回a,b中较大的一个
- double random( ) : 返回一个大于等于0且小于1.0的值,常用来产生随机数
- abs (a) : 返回a的绝对值
- Math.PI : 返回double类型的 π值
闰年(二月29天):普通闰年:能被4整除但不能被100整除;世纪闰年:能被四百整除。闰年有366天。
平年(二月28天):有365天。
例2:用java判断是不是闰年
import java.util.Scanner;
public class LeapYear {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入年份:");
int year = input.nextInt();
if((year % 4 == 0 && year % 100 != 0) || year % 400 ==0)
System.out.print(year + "年是闰年。");
else
System.out.print(year + "年不是闰年。");
}
}
复数 (complex):z = a + bi(a,b均为实数)其中a称为实部,b称为虚部,i称为虚数单位。当z的虚部b等于零时,常称z为实数;当z的虚部b不等于零时,实部a等于零时,常称z为纯虚数。
复数的模:
共轭复数:z = a - bi
例3:复数表示及相乘
import java.util.Scanner;
//主方法
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double a = sc.nextDouble();
double b = sc.nextDouble();
Complex z = new Complex(a,b);
Complex z2 = z.multiply(new Complex(a,b));
System.out.println(z2.toString());;
}
}
import java.math.BigInteger;
//定义一个复数类
public class Complex {
private double a;
private double b;
public Complex(double a, double b) { //带参数的构造
this.a = a;
this.b = b;
}
public double getA() {
return a;
}
public void setA(double a) {
this.a = a;
}
public double getB() {
return b;
}
public void setB(double b) {
this.b = b;
}
public Complex multiply(Complex z) {
double a2 = z.getA();
double b2 = z.getB();
double newA = a*a2-b*b2;
double newB = a*b2+a2*b;
Complex result = new Complex(newA,newB);
return result;
}
public String toString() {
return a+"+"+b+"i";
}
}
未完待续...