java 判断是不是素数
publicstaticvoidmain(String[]args){intnumber;//输入的数字intj=2;Scannerinput=newScanner(Sy...
public static void main(String[] args) {
int number;// 输入的数字
int j = 2;
Scanner input = new Scanner(System.in);
System.out.println("请输入数字");
number = input.nextInt();// 输入数字
for(j=2;j<number;j++){
if(number%j == 0) {
System.out.println("这不素数");
break;
}
System.out.println("这是素数");
}
}
}
输入一个数字,判断它是不是素数,大家帮我修改下这个程序看看错在哪里
大家帮我改改啊。判断素素啊,怎么我j++不会循环加的? 展开
int number;// 输入的数字
int j = 2;
Scanner input = new Scanner(System.in);
System.out.println("请输入数字");
number = input.nextInt();// 输入数字
for(j=2;j<number;j++){
if(number%j == 0) {
System.out.println("这不素数");
break;
}
System.out.println("这是素数");
}
}
}
输入一个数字,判断它是不是素数,大家帮我修改下这个程序看看错在哪里
大家帮我改改啊。判断素素啊,怎么我j++不会循环加的? 展开
展开全部
判断number是否是素数有这么几种方法:
(1)用2至number-1之间的所有数去整除number,如果有一个能被整除,说明number是非素数;除非所有的数都不能被整除,才说明number是素数。
(2)用2至number/2之间的所有数去整除number,如果有一个能被整除,说明number是非素数;除非所有的数都不能被整除,才说明number是素数。
(3)用2至number的平方根之间的所有数去整除number,如果有一个能被整除,说明number是非素数;除非所有的数都不能被整除,才说明number是素数。
这3种的方法的效率是逐渐提高的。下面列出了第3种方法的实现:
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
int number; // 输入的数字
Scanner input = new Scanner(System.in);
System.out.println("请输入数字");
number = input.nextInt(); // 输入数字
if(isPrimeNumber(number)){
System.out.println(number + "是一个素数");
}
else{
System.out.println(number + "是一个非素数");
}
}
public static boolean isPrimeNumber(int num){
if(num < 2){
System.out.println("数据错误");
return false;
}
int k = (int)Math.sqrt(num); //num的平方根
int i;
for(i=2; i<=k; i++){ //依次用2..k之间的数去整除num,如果没有一个数能被整除,说明num是素数
if(num % i == 0){
break;
}
}
if(i > k){
return true;
}
return false;
}
}
如果对你的程序进行修改,也可这样:
public static void main(String[] args) {
int number;// 输入的数字
int j = 2;
Scanner input = new Scanner(System.in);
System.out.println("请输入数字");
number = input.nextInt();// 输入数字
for(j=2;j<number;j++){
if(number%j == 0) {
System.out.println("这不素数");
break;
}
}
if(j>=number)
System.out.println("这是素数");
}
(1)用2至number-1之间的所有数去整除number,如果有一个能被整除,说明number是非素数;除非所有的数都不能被整除,才说明number是素数。
(2)用2至number/2之间的所有数去整除number,如果有一个能被整除,说明number是非素数;除非所有的数都不能被整除,才说明number是素数。
(3)用2至number的平方根之间的所有数去整除number,如果有一个能被整除,说明number是非素数;除非所有的数都不能被整除,才说明number是素数。
这3种的方法的效率是逐渐提高的。下面列出了第3种方法的实现:
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
int number; // 输入的数字
Scanner input = new Scanner(System.in);
System.out.println("请输入数字");
number = input.nextInt(); // 输入数字
if(isPrimeNumber(number)){
System.out.println(number + "是一个素数");
}
else{
System.out.println(number + "是一个非素数");
}
}
public static boolean isPrimeNumber(int num){
if(num < 2){
System.out.println("数据错误");
return false;
}
int k = (int)Math.sqrt(num); //num的平方根
int i;
for(i=2; i<=k; i++){ //依次用2..k之间的数去整除num,如果没有一个数能被整除,说明num是素数
if(num % i == 0){
break;
}
}
if(i > k){
return true;
}
return false;
}
}
如果对你的程序进行修改,也可这样:
public static void main(String[] args) {
int number;// 输入的数字
int j = 2;
Scanner input = new Scanner(System.in);
System.out.println("请输入数字");
number = input.nextInt();// 输入数字
for(j=2;j<number;j++){
if(number%j == 0) {
System.out.println("这不素数");
break;
}
}
if(j>=number)
System.out.println("这是素数");
}
展开全部
import java.util.Scanner;
public class PrimeNumber {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个数:");
int num = scanner.nextInt(); //输入的待判断的数字
if(isPrime(num))
System.out.println("数字 " + num + " 是素数");
else
System.out.println("数字 " + num + " 不是素数");
}
/**
* 判断一个数是否是素数
* 算法核心:
* 定理: 如果n不是素数, 则n有一个因子d满足1< d<=sqrt(n)
* 证明: 如果n不是素数, 则由定义:n有一个因子d满足1< d< n。 如果d大于sqrt(n), 则n/d是满足1< n/d<=sqrt(n)的一个因子
*
* 由此可知:1. 小于等于2的不是素数 2. 2的倍数的数也不是素数 3. 如果从小到大开始遍历,一直到sqrt(n)还不能找到一个因子d,
* 则可以说明该数是素数
*
* @param num 待判断的数
* @return 判断结果
* */
private static boolean isPrime(int num) {
if(num <= 2 || num % 2 == 0)
return false;
for(int i = 3;i * i <= num;i += 2){
if(num % i == 0)
return false;
}
return true;
}
}
详细的解释已经写在上面的代码的注释中了,当然这种算法不算最优,但是比较简单易理解。当然更优的方案可以采用“筛选法”,具体的可以自行百度
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我给你改了一下,你看看。 你判断一个数的话 用一个FOR循环做什么?
public static void main(String[] args) {
int number;// 输入的数字
int j = 2;
Scanner input = new Scanner(System.in);
System.out.println("请输入数字");
number = input.nextInt();// 输入数字
if(number%j == 0) {
System.out.println("这不素数");
}else{
System.out.println("这是素数");
}
}
public static void main(String[] args) {
int number;// 输入的数字
int j = 2;
Scanner input = new Scanner(System.in);
System.out.println("请输入数字");
number = input.nextInt();// 输入数字
if(number%j == 0) {
System.out.println("这不素数");
}else{
System.out.println("这是素数");
}
}
追问
判断素数啊,不是偶数啊
追答
哦,SORRY,再改下
public static void main(String[] args) {
int number;// 输入的数字
int j = 2;
boolean flag = false;
Scanner input = new Scanner(System.in);
System.out.println("请输入数字");
number = input.nextInt();// 输入数字
for (j = 2; j < number; j++) {
if (number % j == 0) {
flag = true;
}
}
if (flag == false) {
System.out.println("这是素数");
} else {
System.out.println("这不是素数");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
import java.util.*;
public class Test {
public static void main(String[] args) {
int number;// 输入的数字
int j = 2;
int tmp = 0;
Scanner input = new Scanner(System.in);
System.out.println("请输入数字");
number = input.nextInt();// 输入数字
if (number < 2)
System.out.print("输入一个大于2的整数!");
else {
for (j = 2; j < number; j++) {
if (number % j == 0) {
tmp += 1;
}
}
if (tmp == 0)//这样刚好也能判断2
System.out.println("是素数");
else
System.out.println("不是素数");
}
}
}
public class Test {
public static void main(String[] args) {
int number;// 输入的数字
int j = 2;
int tmp = 0;
Scanner input = new Scanner(System.in);
System.out.println("请输入数字");
number = input.nextInt();// 输入数字
if (number < 2)
System.out.print("输入一个大于2的整数!");
else {
for (j = 2; j < number; j++) {
if (number % j == 0) {
tmp += 1;
}
}
if (tmp == 0)//这样刚好也能判断2
System.out.println("是素数");
else
System.out.println("不是素数");
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Scanner scann=new Scanner(System.in);
System.out.print("请输入一个数");
int num =scann.nextInt();
boolean numm=true;
for (int i = 2; i <num; i++) {
if(num%i==0){
numm=false;
}
}
String b=numm?"是质数":"不是质数";
System.out.println(b);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询