用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);
}
}
}
上面的算法好像不对啊?
解决方案 »
- 好久没问问题了,找个个人认为有点难度的问题供高人练练手......
- 用Runtime类修改系统IP时的管理员权限
- 高分求教,客户要求UTF-8编码的文件,我该怎么做呢?
- java 连接access数据库问题
- StringBuffer(int lenth)什么意思
- 如何读出字符串中的单个字符?
- 我在学接口中出现的问题帮我看一下下面的错误怎么改正啊,谢谢了。
- 100分 求解linux下运行RSA解密算法的问题
- 打印问题
- 高分求救!jar文件直接双击运行的问题!
- 请问在unix下如何调用unix下的接口,谢谢
- public void executeUpdate(String sql) throws SQLException{..}这样的句法是什么意思啊
{
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);
}
}
}