震惊!极为详细的!适合小白的!三种99乘法表和四种获取质数的方法!还在等什么!我这么嚣张!来蹂虐我啊!!

首先鄙人不才,胡抄乱写得罪之处请见谅

public class lianxi{
	public static void main(String []args){
//99乘法表
	test1();
	test2();
	test3();
//获取质数
	test4(100000);
	test5(100000);
	test6(100000);
	test7(100000);
	}
	//左上角
	private static void test1(){
		for(int i = 1;i<=9;i++){
			for(int j =i; j <= 9 ; j++)
			{
				System.out.print(i+"x"+j+"="+(i*j)+"\t");
			}
			System.out.println();
		}
	}
	//右下角
	private static void test2(){
		for(int i = 1;i <= 9;i++){
			for(int j = 1;j <= 9-i;j++){
				System.out.print("\t");
			}
			for(int k = 1;k<=i;k++){
				System.out.print(k+"x"+i+"="+(i*k)+"\t");
			}
			System.out.println();
		}
	}
	//凑数的,本想是能右上角的,哎,太菜了,左下角也没成功,知道的麻烦教教我。
	private static void test3(){
		for(int i =9;i >= 1;i--){
			for(int k = 1;k <= 9;k++){
				System.out.print("	\t");
			}
			for(int j =1 ;j<=i;j++){
				System.out.print(j+"x"+i+"="+(i*j)+"\t");
			}System.out.println();
		}
	}
	//这里开始取质数
	private static void test4(int n){
	//开始时间
		long start = System.currentTimeMillis();
		int num = 0;
		boolean sign;
		for(int i = 2;i < n;i++){
		/**
		*这里的%和&&贴在这了
		*运算符  /  :除法运算符,并且运算结果遵从向下取整。
   *运算符 % :模运算,
   *    (1)、当运算符左边小于右边,结果就等于左边;
   *    (2)、当运算符左边大于右边,就和算术中的取余是一样的效果。
   *Java中&&和&都是表示与的逻辑运算符,都表示逻辑运输符and,当两边的表达式都为true的时候,整个运算结果才为true,否则为false。
	 *&&的短路功能,当第一个表达式的值为false的时候,则不再计算第二个表达式;&则两个表达式都执行。
	 *&可以用作位运算符,当&两边的表达式不是Boolean类型的时候,&表示按位操作。
		*/
			if(i % 2==0 &&i !=2) continue;
	//这里的continue和下面的brek都是跳出,但continue是跳出本次循环,继续执行下次循环。
			sign=true;
			for(int j = 2 ;j<i;j++){
				if(i%j==0){
					sign=false;
					break;
				}
			}
			if(sign){
				num++;
			}
		}
		System.out.println(n+"Primes within are"+num+"individual");
		//结束时间
		long end = System.currentTimeMillis();
		//计算使用时间
		System.out.println("The time cosr is "+(end - start));
		System.out.println("");
	}
	private static void test5(int n){
		long start = System.currentTimeMillis();
		int num = 0;
		int j;
		boolean sign;
		for(int i = 2;i <=n;i++){
			if(1 % 2==0&&i != 2) continue;
			sign = true;
	//和上面不一样的是这里的j <=i/2,这样他的效率会提升一般,为什么呢?
			for(j = 2;j <= i/2; j++){
				if (i % j ==0 ){
					sign = false;
					break;
				}
			}
			if (sign){
				num++;
			}
		}
		System.out.println(n+"Primes within are"+num+"individual");
		long end = System.currentTimeMillis();
		System.out.println("The time cosr is "+(end - start));
		System.out.println("");
	}
	private static void test6(int n){
		long start = System.currentTimeMillis();
		int num = 0;
		int j;
		boolean sgin;
		for(int i = 2;i<=n;i++){
			if(1%2==0 && i!=2) continue;
			sgin = true;
	//这次就不一样了,因为我用了Math.sqrt,效率~来的太快,就像龙卷风~摧毁停车场!  
	//为啥这么叼呢,因为此方法返回一个正平方根。
			for(j = 2;j<=Math.sqrt(i);j++){
				if(i%j==0){
					sgin = false;
					break;
				}
			}
			if(sgin){
				num++;
			}
		}
		System.out.println(n+"Primes within are"+num+"individual");
		long end = System.currentTimeMillis();
		System.out.println("The time cosr is "+(end - start));
		System.out.println("");
	}

	private static void test7(int n){
		long start = System.currentTimeMillis();
		//素数的总和
		int sum = 0 ;
		//一开始默认全部为素数,所以值全部为0,等到开始筛选的时候再把为合数的赋值为1
		//为啥素数为0,合数为1?。。。。。因为我愿意
		int num[] = new int[n];
		num[0] = 1;	 //因为1规定不是素数,所以提前用1标值
		double prescription = Math.sqrt(n);
		
		//这里把所有素数的倍数剔除,剩下的就是素数
		for(int i = 2;i<=prescription;i++){
		//从i*i开始去除,因为比i*i小的倍数,已经在前面去掉了
        //例如:i=5
        //5的2倍(10),3倍(15),在i=2的时候,已经去掉了
			for(int j = i*i;j <= n;j+=i){
				num[j-1] = 1;
			}
		}
		//这是做什么?
		//遍历数组,把值为0的数全部统计出来,得到素数之和
		for (int i = 0;i<num.length; i++){
			if(num[i]==0){
				sum++;
			}
		}
		System.out.println(n+"Primes within are"+sum+"individual");
		long end = System.currentTimeMillis();
		System.out.println("The time cosr is "+(end - start));
		System.out.println("");
	}
}

这里是运行后结果,是按照顺序排序的,可以见到的是,四种获取质数的方法,效率逐步提升。
什么?那些是质数的结果?下面那个,对,100000后面的,英文太差,百度翻译拼凑的。
在这里插入图片描述
以下,废话
有抄袭,原主请看到了告诉我,我改。反正,删除是不可能删除的了,人家发的第一章,这辈子都不带删除的/。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值