素数

xiaoxiao2021-02-28  172

判断输入的数字是否为素数

package mooc; /* * 利用sqrt(x)判断是否为素数 */ import java.util.Scanner; public class Prime_sqrt { public static void main(String[] args){ Scanner in=new Scanner(System.in); int x=in.nextInt(); boolean isPrime=true; if(x==1 || x%2==0 && x!=2)//排除1和所有偶数 { isPrime=false; } for (int i=3;i<Math.sqrt(x);i+=2)//对于被判断数,只用检测到sqrt(x)即可 { if(x%i==0) { isPrime=false; break; } } if (isPrime) { System.out.println(x+"是素数"); } else { System.out.println(x+"不是素数"); } } }

输出前50个素数(优化前)

package mooc; public class IsPrime { public static void main(String[] args) { int count=0; int test=2; while(count<50) { boolean isPrime=true; for(int i=2;i<test;i++) { if (test%i==0) { isPrime=false; break; } } if (isPrime) { count++; System.out.println("第"+count+"个素数为"+test); } test++; } } }

输出前n(需指定)个素数

package mooc; /* * 判断是否能被已知的且<x的素数整除 */ public class Ex4_1 { public static void main(String[] args) { int[] primes=new int[50];//创建一个长度50的数组用来存放素数 primes[0]=2;//第一个元素为2 int cnt=1;//元素下标,同时也是已存放元素个数 MAIN_LOOP://外循环 for(int x=3;cnt<primes.length;x++)//从3开始进行遍历 { for(int i=0;i<cnt;i++)//i<cnt是因为要用已知素数去判断,而cnt为已知素数的个数 { if(x%primes[i]==0)//用已知素数能否整除x来判断x是否为素数 { continue MAIN_LOOP; //跳出内循环,x+=1,继续遍历下一个数 } } primes[cnt++]=x;//内循环遍历结束,x都不能被整除,将x存放在primes中。primes[cnt++]是指将x存放在当前cnt的位置primes[cnt],然后cnt+1指向下一个位置 } for(int k:primes)//for-each循环遍历数组元素 { System.out.print(k+" "); } System.out.println(); } }

计算第n个素数到第m个素数之间所有素数的和(不是所有数)

package mooc; import java.util.Scanner; public class Ex4_11 { public static void main(String[] args){ Scanner in=new Scanner(System.in); int n=in.nextInt(); int m=in.nextInt(); in.close(); int sum=0; int count=0; int test=2; while(count<m) { boolean isPrime=true; for(int i=2;i<test;i++) { if(test%i==0) { isPrime=false; break; } } if (isPrime) { count++; if(count>=n) { sum+=test; } } test++; } System.out.println(sum); } }
转载请注明原文地址: https://www.6miu.com/read-20740.html

最新回复(0)