用java怎么求解质数?
class Qu9
{
public static void main(String args[])
{
for(int i=2;i<100;i++)
{
if(i%2!=0 && i%3!=0)
System.out.println(i);
}
}
}
上面的算法好像不对啊?
class Qu9
{
public static void main(String args[])
{
for(int i=2;i<100;i++)
{
if(i%2!=0 && i%3!=0)
System.out.println(i);
}
}
}
上面的算法好像不对啊?
{
public static void main(String args[])
{
for(int i=2;i<100;i++)
{
int j = 2;
for (;j < i; j ++)
if(i%j ==0 ) break;
if (j == i)
System.out.println(i);
}
}
}
if(! ((i%2==0) || (i%3==0) || (i%5)==0))
{
public static void main(String[] args)
{
boolean [] a = new boolean[100];
for (int i=0;i<100;i++)
{
a[i]=true;
}
for (int j=2;j<100;j++)
{
for (int k=2;k<=99/j;k++)
{
a[j*k]=false;
}
}
for (int m=2;m<100;m++)
{
if(a[m])
{
System.out.println(m);
}
}
}
}这个应该可以,我没有调,楼主试试吧!
{
public static void main(String args[])
{
for(int i=2;i<100;i++)
{
int j = 2;
for (;j < (int)Math.sqrt(i); j ++)
if(i%j ==0 ) break;
if (j == i)
System.out.println(i);
}
}
}
{
public static void main(String args[])
{
for(int i=1;i<100;i++)
for(int j=2;j<=i+1;j++)
{
if(i!=1)
{
if(i%j==0&&i==j)
System.out.println(i);
else if(i%j==0&&i!=j)
break;
}
else
System.out.println(i);
}
}
}上边的程序是完整的求质数的一个小例子!是本人刚刚写!
楼主可以使用一下看看,可能有不足之处,望指正!
顺道接分!
public static void main(String[] args) {
System.out.print(2 + " ");
int count = 1;
label: for (int i = 3; i < 100; i += 2) {
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i % j == 0)
continue label;
}
System.out.print(i + " ");
if (++count % 6 == 0)
System.out.println();
}
}
}
这样效率稍高一些
对于一个自然数必须要要做,sqrt(n)次循环!
n除以1到sqrt(n)取整之后的数字都不能整除,n才是质数!
因为质数与质数的乘积不能保证也是质数!
比如!3*5 = 21。
if (j == i)
System.out.println(i);
除了j==2的时候,其它时候j!=i啊,因为你的j只判断道sqrt(i).
所以输出结果除了2,就没有别的了
{
public static void main(String args[])
{
for(int i=2;i<100;i++)
{
int j = 2;
int sqrti=(int)Math.sqrt(i);
for (;j < sqrti+1; j ++)
if(i%j ==0 )
break;
if (j == sqrti+1)
System.out.println(i);
}
}
}