黑马程序员技术交流社区
标题:
关于求质数的问题,为什么运行没有结果呢
[打印本页]
作者:
爽朗的菜籽
时间:
2014-10-15 21:16
标题:
关于求质数的问题,为什么运行没有结果呢
/*
* 6、求三位数的质数
* 思路:所谓指数就是指能被1和它本身整除的数
* 三位数范围 100-999
*/
public class NumTest
{
public static void main(String[] args)
{
for(int i=100; i<1000; i++)
{
for(int j=2; j<=i/2; j++)
{
if(i%j==0)
{
if(i==j)
{
System.out.print(i+" ");
}else
{
break;
}
}
}
}
}
}
复制代码
作者:
哈达洋
时间:
2014-10-15 21:33
你的j值小于i/2,在后面判断的时候,i==j?这怎么可能嘛
作者:
无知的xiaopihai
时间:
2014-10-15 21:37
嗯,我觉得是楼主粘错了吧。。。。
作者:
康师傅-蛋黄派
时间:
2014-10-15 22:50
j<sqrt(i)就可以了,要执行System.out.print(i+" ")语句,则必须i==j,而外部的for循环,i!=j的
作者:
nerveva2000
时间:
2014-10-15 22:53
class Test
{
public static void main(String[] args)
{
int n=0;
for(int x=100;x<1000;x++)
{
n=0;
for(int y=1;y<=x;y++)
{
if(x%y==0)
{
n++;
}
}
if(n==2||n==1)
{
System.out.print(x+" ");
}
}
}
}
复制代码
作者:
爽朗的菜籽
时间:
2014-10-16 00:33
public class NumTest
{
public static void main(String[] args)
{
int count = 0;
//既然是求三位数质数,那么范围在100-999之间
for(int i=100; i<1000; i++)
{
//定义一个标记,用于标记素数
boolean b = true;
//j定义在2-i/2之间
for(int j=2; j<=i/2; j++)
{
//如果i能被j整除,那么说明i并不是素数,将b置为false,并且跳出整个循环,执行其他语句
if(i%j==0)
{
b = false;
break;
}
}
//通过判断b,如果是true说明,没有被整除过,即为素数
if(b)
{
if(count==5)
{
count=0;
System.out.println();
}
count++;
System.out.print(i+" ");
}
}
}
}
复制代码
作者:
FlyFish
时间:
2014-10-16 14:48
本帖最后由 FlyFish 于 2014-10-16 15:04 编辑
public class PrimeTest
{
public static void main(String[] args)
{
primeNum(100,1000);
}
public static void primeNum(int a,int b)
{
for(int x=a ; x<b ; x++)
{
boolean bl=true;
for(int y=2 ; y<=x/2 ; y++)
{
if(x%y==0)
{
bl=false;
break;
}
}
if(bl)
System.out.print(x+"\t");
}
}
}
作者:
奋斗的小孩
时间:
2014-10-16 20:44
本帖最后由 奋斗的小孩 于 2014-10-16 20:45 编辑
class Demo8{
public static void main(String[] args){
for(int x = 100;x<1000;x++){
for(int y = 2;y<=x/2;y++){
if(x%y==0){
break;
}
else if(y<x/2){
continue;
}else{
System.out.print(x);
}
System.out.println();
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2