Java-100到200的素数

本文介绍了一个简单的Java程序,用于检测101到200之间的所有素数,并统计其总数。通过循环和条件判断实现素数的有效筛选。

目标效果:


源码:

import java.util.Scanner;

/**
 * 判断101-200之间有多少个素数,并输出所有素数。
 * @author Vivinia
 *
 */
public class primeNum {
	static int count=0;      //素数个数
	public static void main(String args[]) {
		System.out.println("101到200之间的素数:");
		for(int i=101;i<=200;i++) {
			calcNum(i);
		}
		System.out.println("一共有:"+count+"个素数。");
	}

	private static void calcNum(int i) {
		int j=2;                  //j作为除数,因为1素数也可以整除,所以不从1开始
		while(j<=i/2) {           //对于素数来说,只要除以它一半以内的数测试就好,因为一个数必定由一个小于等于它一半的数和一个大于等于它一半的数相乘而得(例如4=2*2,10=2*5)
			if(i%j==0)            //如果等于0代表除了1和本身外还有别的数可以整除
				break;			
			j++;
		}
		if(j==i/2+1) {            //当j=i/2+1时循环进不去了,代表遍历完都没有发现别的可以整除的数
			System.out.println(i);
			count++;
		}
	}
}


有时候对素数求解这里经常混,所以记下来供以后参考,大佬勿喷。


以下是几种使用 Java 语言输出 100200 之间素数的代码示例: ### 方法一 ```java package com.study; public class PrimeNumberTest { public static void main(String[] args) { // 定义一个循环,找到 101 到 200 之间的全部数据 for(int i = 101; i < 200; i++) { // 信号位:标记 boolean flag = true; // 一开始认为当前数据是素数 // 判断当前遍历的这个数据是否是素数 for (int j = 2; j < i / 2; j++) { if (i % j == 0) { flag = false; break; } } // 根据判定的结果选择是否输出这个数据,是素数输出 if(flag) { System.out.println(i + "\t"); } } } } ``` 此方法通过两层循环来判断 101 到 199 之间的每个数是否为素数。外层循环遍历 101 到 199 的数,内层循环从 2 到该数的一半进行遍历,如果该数能被其中任何一个数整除,则不是素数,标记为 `false` 并跳出内层循环。最后根据标记决定是否输出该数[^1]。 ### 方法二 ```java public class primeNumber { public static void main(String[] args) { int quantity = quantity(101, 200); System.out.println(quantity); } public static int quantity(int start, int end) { int count = 0; for (int i = start; i <= end; i++) { boolean flag = true; for (int j = 2; j <= i / 2; j++) { if (i % j == 0) { flag = false; break; } } if (flag) { System.out.println(i + "是素数"); count++; } } return count; } } ``` 该方法将判断素数的逻辑封装在 `quantity` 方法中,接收起始和结束范围作为参数。在 `quantity` 方法中,同样使用两层循环判断每个数是否为素数,同时统计素数的个数并返回[^2]。 ### 优化思路 在数学中,任何一个数的最大公因数都小于等于它本身的一半,因此遍历时只需要从 2 遍历到 `i/2` 就行,若没有整数能够整除该数,就可以判断该数是素数,反之则不是素数。这样可以减少遍历次数[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值