public class temp
{
public static void main(String[] args)
{
int i,j;
for(i=2;i<=1000;i++)
{
for(j=2;j<i/2+1;j++)
if(i%j==0) break;
else System.out.println("质数是:"+i);
}
}
}

解决方案 »

  1.   

    if(i%j==0) break;
    else System.out.println("质数是:"+i);这怎么行,如果某一个数字不能整除,并不代表下一个数字也不能整除。一般的判断是这样的
    for(j=2;j<i/2+1;j++){
      if(i%j==0) break;
    }
    if(j>=i/2+1){
       System.out.println("质数是:"+i);
    }来确保每个需要判断的都判断过来,只有所有的都不等于0,才行。
      

  2.   

    这里有个判断指数的更优化的算法,不过很难理解。 http://www.java2000.net/p121
      

  3.   

    我写的一个判断质数:(只是判断,不直接把质数输出)import javax.swing.*;
    public class PrimeTest { /**
     *判断是否是质数
     */
    public static void main(String[] args) {
    String s;
    int ns;
    int i;
    char c;
    String result="";
    do{
    s=JOptionPane.showInputDialog("请输入一个数字");
    ns=Integer.parseInt(s);
    if(ns==1)
    //System.out.println(ns+"既不是质数,也不是合数!");
    result=ns+"既不是质数,也不是合数!";
    else{
    for(i=2;i<=ns-1;i++){
    if(ns%i==0)
    break;
    }
    if(i==ns)
    //System.out.println(ns+"是质数");
    result=ns+"是质数";
    else
    //System.out.println(ns+"不是质数");
    result=ns+"不是质数";
    }
    JOptionPane.showMessageDialog(null, result);

    String s2=JOptionPane.showInputDialog("继续判断吗?");
    c=s2.charAt(0);
    }while(c=='y'||c=='Y');

    }}
      

  4.   


     int i,j;
            for(i=2;i<=20;i++)
            {
                for(j=2;j<i/2+1;j++) {
                 if(i%j==0) break;
                }
                if(j == i/2+1) System.out.println("质数是:"+i);
            }
    简单修改就可以了
      

  5.   

    for(i=2;i<=1000;i++)
            {
                for(j=2;j<i/2+1;j++)
                    if(i%j==0){
                     System.out.println(i+"为合数");
                     break;
                    }
                    else System.out.println("质数是:"+i);
            }