关于java求素数的问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 14:51:26
通过调用RanPrime类中的Creat_random()方法来生成n个随机两位数,但是结果却得不到素数。代码如下:素数判断条件是:u % j !=0&&j>=(u-1)分用两个if表示。
小弟调了很久,都没有得到想要的结果,希望能得到大家的帮助。
class RanPrime{
int i;
static int a[];

public void Creat_random(int n){
a = new int[n];
for(i=0;i<n;i++)
a[i]=(int)(100*Math.random());
}
}
public class prime {
public prime() {
}
public static void main(String [] args){
int t,j,m=11;
int u;
RanPrime x=new RanPrime();
x.Creat_random(m);
for(t=0;t<m;t++){
u=x.a[t];
for(j=2;j<u;j++){
if(u != 0 && j != 0){
if(u % j !=0){
if(j>=(u-1)){
System.out.println(u);
break;
}
}
}
}
}
}
}

1.for(j=2;j<u;j++)
循环条件可以修改成:for(j=2;j<=Math.sqrt(u);j++)
提高效率.
2.if(u != 0 && j != 0){
if(u % j !=0){
if(j>=(u-1)){
System.out.println(u);
break;
}
}
}
这段代码有问题.想想你的break.

以下是我修改过的代码,已经通过测试了.^-^.
class RanPrime{
int i;
static int a[];

public void Creat_random(int n){
a = new int[n];
for(i=0;i<n;i++)
a[i]=(int)(100*Math.random());
}
}

public class prime {
public prime() {
}
public static void main(String [] args){
int t,j,m=11;
int u;
boolean flag=true;
RanPrime x=new RanPrime();
x.Creat_random(m);
System.out.println(\"生成的随机数为:\");
for(t=0;t<m;t++){
System.out.print(x.a[t]+\",\");
}
System.out.println();
System.out.println(\"其中为素数的有:\");
for(t=0;t<m;t++){
u=