这是一道历年算法的一道简单的拔高题 第一次发文章如写的不好还请见效,因为是初学者代码中可能还存在更多的优化效果可以互相学习哦? 废话不多说上代码
package com.It.java;
import java.util.Scanner;
public class PersonTest {
public static void main(String[] args) {
String n = new Scanner(System.in).nextLine(); // 创建N对象用来接收
int n1=Integer.parseInt(n); // 将接受的数值转换为Int型
int [] arr = new int[n1+1]; // 定义数组用来存放质数
for (int i = 2; i <n1+1 ; i++) { //使用双层for循环判断质数
boolean isn=true; //定义临时变量
for (int j = 2; j <i ; j++) {
if(i%j==0){ //利用相反的原理我们判断i余j==0
isn=false;
}
}
if(isn){ //相反如果isn返回是true则这个数字是质数
arr[i]=i;
}
}
String[] as =new String[arr.length]; //定义String数组
for (int i = 0; i <arr.length ; i++) {
as[i]= String.valueOf(arr[i]); //将Int型数组赋值到String数组中
}
boolean is = true; //定义临时变量is
for (int i = 0; i <as.length ; i++) {
if(as[i].contains(n)){ //利用contains函数判断是否是质数N
is = false;
break;
}
}
if(is){ //判断is 如果是true返回不是质数
System.out.println("no");
}else {
System.out.println("yes"); //返回false则是质数
}
System.out.println();
}
}
测试1:
输入:2
输出:yes
测试2:
输入:50
输出:no
写的不好? 原理构思都在代码中,主要原理就是将质数放置在数组中,用String的Contains函数判断
|