用java实现的素数第二种算法

 
//遍历2以上N的平方根以下的每一个整数,是不是能整除N
一,DOS界面
public class PrimeNumber1 {
 public static void main(String args[]) {
 int N = 100;
 int p[]=new int[50];
 p[0] = 2;// 放入第一个素数,有人说2不是素数,如果你是其中一员,就改成3吧
 int nu = 1;
 boolean bflag = true;
  for(int i = 3;i <N; ++i)
  {
  bflag = true;
  int iTemp = (int)Math.sqrt((float)i);
   for (int j = 2; j <=iTemp; ++j)
   {
    if(i%j == 0)
    {
    bflag = false;
    break;
    }
   }
   if(bflag)
   {
   p[nu++] =(int)i;
   }
  }
  for(int l=0;l<=nu-1;l++)
  System.out.print(p[l]+" ");
  }
}
 
 
二,带弹出窗口的:(怎样在弹出窗口中一次输出所有的素数还没解决,现在只能在DOS中输出结果)
import javax.swing.JOptionPane;
public class PrimeNumber1Pane
{
 public static void main(String args[])
 {
  while (true)
  {
   String b = JOptionPane.showInputDialog("Enter figure that you want to beg prime number!");
   int N = Integer.parseInt(b);
   int p[] = new int[50];
   PrimeNumber1Pane a = new PrimeNumber1Pane();
   int nu = a.primeNumber(p, N);
   for (int l = 0; l <= nu - 1; l++)
    System.out.print(p[l] + " ");
   int answer = JOptionPane.showConfirmDialog(null, "End program?", "Want to end?", JOptionPane.YES_NO_OPTION);
   //字符串“End program?”可以被别的字符串取代,这将是出现在带Yes/No按钮的窗口中的字符口串,字符串“Want to end?”也可被取代,并将出现在窗口的标题中。
   //JOptionPane.YES_NO_OPTION表示你需要一个带Yes/No的窗口。
   if (answer == JOptionPane.YES_OPTION)
    System.exit(0);
   else if (answer == JOptionPane.NO_OPTION)
    System.out.println("/nOne more time");
  }
  //else
   //System.out.println("This is impossible");
 }
 public int primeNumber(int p[],int N)//p为放入素数的首地址,N为要求素数的数,返回为素数的个数
  {
  p[0] = 2;// 放入第一个素数,有人说2不是素数,如果你是其中一员,就改成3吧
  int nu = 1;
  boolean bflag = true;
  for (int i = 3; i < N; ++i)
  {
   bflag = true;
   int iTemp = (int)Math.sqrt((float)i);
   for (int j = 2; j <= iTemp; ++j)
   {
    if (i % j == 0)
    {
     bflag = false;
     break;
    }
   }
   if (bflag)
   {
    p[nu++] = (int)i;
   }
  }
  return nu;
  }
}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值