十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
一个好的算法,要经的起推敲,不要只求结果
创新互联建站是一家专注于做网站、成都网站制作与策划设计,榆林网站建设哪家好?创新互联建站做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:榆林等地区。榆林做网站价格咨询:13518219792
import java.util.ArrayList;
import java.util.List;
public class Primes {
public static void main(String[] args) {
// 求素数
ListInteger primes = getPrimes(200);
// 输出结果
for (int i = 0; i primes.size(); i++) {
Integer prime = primes.get(i);
System.out.printf("%8d", prime);
if (i % 10 == 9) {
System.out.println();
}
}
}
/**
* 求 n 以内的所有素数
*
* @param n
* 范围
*
* @return n 以内的所有素数
*/
private static ListInteger getPrimes(int n) {
ListInteger result = new ArrayListInteger();
result.add(2);
for (int i = 3; i = n; i += 2) {
if (!divisible(i, result)) {
result.add(i);
}
}
return result;
}
/**
* 判断 n 是否能被整除
*
* @param n
* 要判断的数字
* @param primes
* 包含素数的列表
*
* @return 如果 n 能被 primes 中任何一个整除,则返回 true。
*/
private static boolean divisible(int n, ListInteger primes) {
for (Integer prime : primes) {
if (n % prime == 0) {
return true;
}
}
return false;
}
}
求1-N以内的所有素数,实现思路如下:
1、 得到1到n之间的素数,存到一个ArrayList集合。
2、判断一个数是不是素数:只能被1和本身整除
说明:从2开始除,不需要到n,也就是循环条件是 n 就可以,这之间只要被整除了,那么他就不是素数了。
3、设置主函数,运行 getPrimeNumberToN获取限定范围内的素数。
执行结果图:
扩展资料:
实现功能的编程事项:
1、模块化思想。
先拆分需求,先拆分先考虑怎么确定一个数是不是素数,然后再复用到所有。不能把方法堆到一起,否则无法复用代码。
2、注意注释。
就算是自己的测试代码,尽量写清楚注释,这样即使过了三个月,再看代码,也能清晰明了。不要觉得简单,就懒得注释。
3、注意参数命名。
从类名到方法名,再到变量名,都不能随意取名,关于这个命名,不要嫌弃长,重点是意思清楚明白。见名知意(语义化),是最好的。
程序如下,希望有所帮助
public class Prime {
//判断质数
public static void isPrime(int num) {
int j = 2;
for (; j = Math.sqrt(num); j++) {
if (num % j == 0) {
System.err.println(num + "不是质数!");
return;
}
}
if (j Math.sqrt(num)) {
System.err.println(num + "是质数!");
return;
}
System.err.println(num + "不是质数!");
return;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.err.println("请输入数字:");
int num = sc.nextInt();//接收输入
isPrime(num);//判断是否为质数
}
}
/**
* 0-100:是:101个数字,不是100个;
* 0与1,不是质数也不是合数:
* 以下代码写的有点冗余:只因为题目要求,布尔数组要参与运算!
* 其实一个循环就可以解决的事!
*/
public class Prime {
public static void main(String[] args) {
int arr[]=new int[101],count=0;//元素数组!
boolean[] brr=new boolean[101];//标记数组!
for(int i=0;iarr.length;i++) //循环复制!
arr[i]=i;
f:for (int i = 0; iarr.length; i++) {//判断!
if(i2)continue f;//跳过,0,1;
for(int tem=i;tem--!=2;)
if(i%tem==0)
continue f;
brr[i]=true;//标记
}
for (int i = 0; i brr.length; i++) {//查看!
if(brr[i]!=false) {
count++;
System.out.print(arr[i]+" ");
}
}
System.out.println("\r\n0-100质数共:"+count+"个!");
}
}
public class PrimeNumber {
/**
* 质数,只能被1和自身整除
* @param args
*/
public static void main(String[] args) {
for (int i = 100; i = 200 ; i++) {
/*
标识位:true表示质数,false表示非质数
假定每个数一开始都是质数
*/
boolean flag = true;
for (int j = 2; j i ; j++) {
/*
从2开始除,只要余数为0就表示这个数能被其他数整除
然后将标识位设置为false,然后跳出内层循环执行
*/
if (i % j == 0){
flag = false;
break;
}
}
/*
根据标识位来判定是否是质数,是的话就输出
*/
if(flag){
System.out.println("质数:" + i);
}
}
}
}