吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3384|回复: 12
收起左侧

[Java 转载] java 求出100以内的质数,并8个一行进行输出

[复制链接]
songjing 发表于 2022-3-1 15:19
就前两天嘛  我们人事小姐姐也在学java  他们看的那个视频,老师讲的是 刚出来10个人有两个能写出来这个问题就算可以了
我能认怂吗

这不手拿把掐  优化不是很好 效果出来了 后期闲了继续优化

其实还直接可以算平方根  好像更快

[Java] 纯文本查看 复制代码
package com.cron.cron.test;

import java.util.ArrayList;
import java.util.List;

/**
 * ClassName: testZhi
 * Description:
 * date: 2022/2/25 18:24
 *
 * [url=home.php?mod=space&uid=686208]@AuThor[/url] robotname a
 * @author dev whz
 * [url=home.php?mod=space&uid=441028]@Since[/url] JDK 1.8
 */
public class testZhi {
    public static void main(String[] args) {
        List<Integer> integers = new ArrayList<>();
        int num=100;
        //根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积;而且如果不考虑这些质数在乘积中的顺序,那么写出来的形式是唯一的。最小的质数是2
        for (int i = 2; i <= num; i++) {
            int j = 2; 
            while (j <= i - 1) {
                if (i % j == 0) {
                    break;
                }
                j++;
            }

            if (j == i) {
                integers.add(i);
            }
        }

        int count = integers.size() / 8;
        //取余
        int yu = integers.size() % 8;
        //判断是否还有余数
        if (yu > 0) {
            count = count + 1;
        }
        for (int i = 0; i < count; i++) {
            List<Integer> subList = new ArrayList<Integer>();
            if (i == count - 1) {
                subList = integers.subList(i * 8, integers.size());
            } else {
                subList = integers.subList(i * 8, 8 * (i + 1));
            }
            System.out.println(subList);
        }
    }
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

TeMoon 发表于 2022-3-1 16:03
本帖最后由 TeMoon 于 2022-3-1 16:04 编辑

[Java] 纯文本查看 复制代码
public class Dome{
public static void main(String[] args) {
		System.out.println("2 "+"3 "+"5 "+"7 "+"11 "+"13 "+"17 "+"19");
		System.out.println("23 "+"29 "+"31 "+"37 "+"41 "+"43 "+"47 "+"53");
		System.out.println("59 "+"61 "+"67 "+"71 "+"73 "+"79 "+"83 "+"89");
		System.out.println(97);
	}
}

免费评分

参与人数 4吾爱币 +1 热心值 +4 收起 理由
xianyuamiao123 + 1 + 1 我很赞同!
无情斗 + 1 谢谢@Thanks!
songfy825 + 1 我很赞同!
liumiao123 + 1 我很赞同!

查看全部评分

fxzh007 发表于 2022-3-1 15:35
[Java] 纯文本查看 复制代码
package com.gx.demo;

public class Demo1 {
	public static void printPrimeNumber(int range) {
		int i, num, num2, sum = 0;
		for (num = 2; num <= range; num++) {
			num2 = (int) Math.sqrt(num);//Math.sqrt取num这个变量的开方
			for (i = 2; i <= num2; i++) {//质数是只能被1跟自身整除的数,1不是质数
				if (num % i == 0)
					break;
			}
			if (i == num2 + 1) {
				sum++;
				System.out.print(num + "\t");
				if (sum % 8 == 0)
					System.out.println();
			}
		}
	}

	public static void main(String[] args) {
		// 打印100以内的素数
		printPrimeNumber(100);
	}

}
 楼主| songjing 发表于 2022-3-1 15:51
fxzh007 发表于 2022-3-1 15:35
[mw_shl_code=java,true]package com.gx.demo;

public class Demo1 {

牛逼大哥  我还沉沦再你写的代码里  这个为什么要求这个开方呢
永恒陌 发表于 2022-3-1 16:15
songjing 发表于 2022-3-1 15:51
牛逼大哥  我还沉沦再你写的代码里  这个为什么要求这个开方呢

你拿12来举例子。   计算到3*4了。然后下一步又该计算4*3了。  所以 开方, 只求前边一半就可以了。后边的都是无效计算
 楼主| songjing 发表于 2022-3-1 16:18
永恒陌 发表于 2022-3-1 16:15
你拿12来举例子。   计算到3*4了。然后下一步又该计算4*3了。  所以 开方, 只求前边一半就可以了。后边 ...

昂 明白了  感谢感谢  没想到这么牛逼  谢谢 谢谢
 楼主| songjing 发表于 2022-3-1 16:19
TeMoon 发表于 2022-3-1 16:03
[mw_shl_code=java,true]public class Dome{
public static void main(String[] args) {
                System.out.pr ...

高司令都夸你的代码执行快
大方 发表于 2022-3-1 16:43
我们老师也留这个作业,不过是用python和java分别实现的。

提速的2个关键,一个是只最大到小于平方根,一个是把计算出来的素数放到一个数组里,当检测的时候只检测质数即可,不用所有的数字都检测。
这样会提速很多。

目前算到了第279238341033925个素数是9999999999999937
Rene 发表于 2022-3-1 17:32
TeMoon 发表于 2022-3-1 16:03
[mw_shl_code=java,true]public class Dome{
public static void main(String[] args) {
                System.out.pr ...

T老师还得是你啊
whsdaks 发表于 2022-3-1 17:54
TeMoon 发表于 2022-3-1 16:03
[mw_shl_code=java,true]public class Dome{
public static void main(String[] args) {
                System.out.pr ...

这么多字符串拼接,建议stringBuilder [doge]
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 05:58

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表