A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

import java.util.*;
class Num05
{
        public static void main(String[] args)
        {
                Scanner in = new Scanner(System.in);
                System.out.println("请输入一个数");
                int num = in.nextInt();
                if(num>2)
                {
                        for (int i=2; i<num;i++ )
                        {       
                                if(num%i==0)
                                {
                                        System.out.println("这个数不是质数");
                                        break;
                                }
                                else
                                {
                                        System.out.println("这个数是质数");
                                        break;
                                }
                        }
                }
                else if(num>0&&num<3)
                        System.out.println("这个数是质数");
                else
                        System.out.println("这个数不是质数");
        }
}

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

8 个回复

正序浏览
张学林 发表于 2013-3-12 20:41
import java.util.*;

public class Num05 {

对,真厉害!
回复 使用道具 举报
fighting 发表于 2013-3-12 21:04
for循环里if...else...都break了,这个循环不就执行一次了么?
判断是质数那个语句是对的,else里应该用con ...

呵呵,二了一回,着了一个数
回复 使用道具 举报
  1. import java.util.Scanner;

  2. public class ZhiShuTest
  3. {
  4.     public static void main(String[] args)
  5.     {
  6.         Scanner in = new Scanner(System.in);
  7.         //可以循环判断...不过没定义结束标记,一起玩下
  8.         while(true){
  9.                 System.out.println("请输入一个数");
  10.                 int num = in.nextInt();
  11.                 //需要定义标记,不然后面的判断不好进行
  12.                 boolean flag = true;
  13.                 if(num>2)
  14.                 {
  15.                     for (int i=2; i<num;i++ )
  16.                     {        
  17.                         if(num%i==0)
  18.                         {
  19.                                 flag = false;
  20.                             System.out.println("这个数不是质数");
  21.                             break;
  22.                         }
  23.                     }
  24.                     if(flag){
  25.                             System.out.println("这个数是质数");
  26.                     }
  27.                 }
  28.                 else if(num>0&&num<3)
  29.                     System.out.println("这个数是质数");
  30.                 else
  31.                     System.out.println("这个数不是质数");
  32.         }
  33.     }
  34. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

回复 使用道具 举报
for循环里if...else...都break了,这个循环不就执行一次了么?
判断是质数那个语句是对的,else里应该用continue吧

这样是不是好点?
  1. for (int i = 2; i < num; i++) {
  2.                                 if (num % i == 0) {
  3.                                         System.out.println("这个数不是质数");
  4.                                         break;
  5.                                 }else {
  6.                                         if(num == i){
  7.                                                 System.out.println("这个数是质数");
  8.                                         }else{
  9.                                                 continue;
  10.                                         }
  11.                                 }
  12.                         }
复制代码

点评

num不可能=i 的因为for的条件就是i<num  发表于 2013-3-12 21:24
回复 使用道具 举报
  1. import java.util.Scanner;
  2. /*
  3. * 思路:
  4. * 1.定义Scanner接收键盘录入数据,并用变量接收
  5. * 2.从2到num遍历数据是否能被整除,如果能被整除跳出循环
  6. * 3.判断i是否与num相等,如果相等为素数,反之不是素数。
  7. * */
  8. public class Prime {
  9.         public static void main(String[] args) {
  10.                 int i;
  11.                 System.out.println("请输入一个整数");
  12.                 Scanner sc = new Scanner(System.in);
  13.                 int num = sc.nextInt();
  14.                 for (i = 2; i < num; i++) {
  15.                         if(num%i == 0){
  16.                                 break;
  17.                         }
  18.                 }
  19.                 if(num == i){
  20.                         System.out.println(num+"为素数");
  21.                 }
  22.                 else{
  23.                         System.out.println(num+"不是素数");
  24.                 }
  25.         }
  26. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 张学林 于 2013-3-12 20:45 编辑

import java.util.*;

public class Num05 {
        public static void main(String[] args) {
                Scanner in = new Scanner(System.in);
                System.out.println("请输入一个数");
                int num = in.nextInt();
                boolean flag = false;// 做个标记当不是质数的时候把它置为true        
                            if (num > 2) {
                        for (int i = 2; i < num; i++) {
                                if (num % i == 0) {
                                        flag = true;// 只判断是不是质数
                                        // System.out.println("这个数不是质数");
                                        break;
                                } // else {
                                // System.out.println("这个数是质数");
                                // break;
                                // }
                        }
                        if (flag)// 根据标记打印是否为质数
                                System.out.println("这个数不是质数");
                        else
                                System.out.println("这个数是质数");

                } else if (num > 0 && num < 3)
                        System.out.println("这个数是质数");
                // else
                // System.out.println("这个数不是质数");个人感觉这句没必要
        }
}

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

回复 使用道具 举报
算位数少的应该没什么问题。但是 如果位数再多些的话 比如说20位的数的检验,你的算法就得改了。
回复 使用道具 举报
  for (int i=2; i<num;i++ )
                         {        
                                if(num%i==0)
                                 {
                                         System.out.println("这个数不是质数");
                                         break;
                                 }
                                 else
                                 {
                                         System.out.println("这个数是质数");
                                         break;
                                 }
                         }
else 不能放在for里面  
你放在里面执行到一次if不成立就会到else中
你判断不了这个数除以它之前的全部的情况
举个例子
number=6得时候
6%4就会到else中  就会判断是质数然后跳出循环

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马