1、输入一个数判断是否是素数?...import java.util.Scanner; public class PrimeNum { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入
1、输入一个数判断是否是素数?
方法一:直接判断,从2开始一直到n-1,若n对其求余==0,不是素数,否则是素数
import java.util.Scanner;
public class PrimeNum {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入你要判断的数:");
int n = scan.nextInt();
int i;
for(i=2;i<n;i++) {
if(n%i==0) {
System.out.println(n+"不是素数");
break;
}
}
if(n==i) System.out.println(n+"是素数");
}
方法二:方法一要循环的次数过多,为了让循环变得简单,我们可以对其进行优化
若判断8是否为素数 18 24
若判断15是否为素数 115 35
其中必有一个因子<=该数的1/2
所以优化代码为:
import java.util.Scanner;
public class PrimeNum {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入你要判断的数:");
int n = scan.nextInt();
int i;
for(i=2;i<=n/2;i++) {//循环次数减少
if(n%i==0) {
System.out.println(n+"不是素数");
break;
}
}
if(n==i) System.out.println(n+"是素数");
}
法三:
8=18 24 <img alt="\sqrt{}" class="mathcode" src="https://latex.csdn.net/eq?%5Cfn_cm%20%5Csqrt%7B%7D">8=2 <img alt="\sqrt{}" class="mathcode" src="https://latex.csdn.net/eq?%5Cfn_cm%20%5Csqrt%7B%7D">2
16=116 28 4*4 <img alt="\sqrt{}" class="mathcode" src="https://latex.csdn.net/eq?%5Cfn_cm%20%5Csqrt%7B%7D">16=4
由上述两个例子可得,若m不是素数,其中一个因子必定<= <img alt="\sqrt{}" class="mathcode" src="https://latex.csdn.net/eq?%5Cfn_cm%20%5Csqrt%7B%7D">m
import java.util.Scanner;
public class PrimeNum {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入你要判断的数:");
int n = scan.nextInt();
int i;
for(i=2;i<=(int)Math.sqrt(n);i++) {//Class Math不需手动导入import java.lang
if(n%i==0) { //sqrt 求根号是double类型,需要强转成int型
System.out.println(n+"不是素数");
break;
}
}
if(n==i) System.out.println(n+"是素数");
}
2、打印100-200之间的所有素数,并输出总共多少个
法一:
public class PrimeNum {
public static void main(String[] args) {
int n=200,j,sum=0;
for(int i=100;i<=n;i++) {
for(j=2;j<i;j++) {
if(i%j==0) break;
}
if(j==i) {
System.out.print(i+"是素数");
sum++
}
}System.out.println("sum="+sum);
}
}
法二:
public class PrimeNum {
public static void main(String[] args) {
int i,j,sum=0;
for(i=100;i<=200;i++) {
for(j=2;j<=(int)Math.sqrt(i);j++) {
if(i%j==0) {
break;
}
}
if(j>(int)Math.sqrt(i)) {
System.out.println(i+"是素数");
sum++;
}
} System.out.println("sum="+sum);
}
}
本站主要用于,日常笔记的记录,和生活日志。本站不保证所有内容信息可靠!(大多数文章属于搬运!)如有版权问题!请联系我立即删除“abcdsjx@126.com”