A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© luxinyu 中级黑马   /  2015-5-25 23:21  /  2851 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

主要代码如下:for(int a=2;a<100;a++)
{
   for(int b=2;b<a-1;b++)
    {
        
    }
}外层for循环式没有问题的。。但是在最内层循环中怎么用if才能判断出这个数不能被除了1和他自身其他的数除开呢?

11 个回复

倒序浏览
你想想素数是什么:
只能被1 和本身整除;
所以:
先找一个数 x,判断它是否为素数?
怎么判断呢?
因为只能被1和本身整除
所以可以遍历 从 2 开始 到 该数 之间的所有数 i;
每次都用该数除以这之间的数 求余(x % i), 如果有一次这个余数的值为0,证明这个数不是素数,跳出此循环,继续判断下一个数
回复 使用道具 举报
跟我的一道基础测试题有点类似,修改了一下,希望对你有帮助。
  1. class Demo1
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 //遍历所有三位数,作为被除数。
  6.                 for(int x=2; x<100; x++)
  7.                 {
  8.                         //定义计数器,用来记录整除的次数。
  9.                         int count = 0;
  10.                        
  11.                         //遍历除数。
  12.                         for(int y=1; y<(x+1)/2; y++)
  13.                         {
  14.                                
  15.                                 //判断整除的条件。如果整除,count自增。
  16.                                 if(x%y==0)
  17.                                         count++;
  18.                         }
  19.                        
  20.                 //判断整除的次数,如果小于2,则为质数。
  21.                 if(count<2)
  22.                         System.out.println(x+"...是素数");
  23.                 }
  24.         }

  25. }
复制代码

回复 使用道具 举报
就是我的一道基础测试题  不过 我的那一道题还要求 包含7的素数不输出~~~
回复 使用道具 举报
[code]public class Test {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                getSS();
        }

        private static void getSS() {

                for (int i = 1; i <= 100; i++) {
                        boolean flag = true;
                        for (int j = 2; j < i; j++) {
                                if(i%j == 0){
                                        flag = false;
                                        break;
                                }
                        }
                        if(flag){
                               
                                System.out.print(i+",");
                        }
                }
        }

}
回复 使用道具 举报
import java.util.ArrayList;
import java.util.List;

public class Test1 {

        public static void main(String[] args) {
                List<Integer> list = new ArrayList<Integer>();//定义集合list用于存储素数
                int count = 0;//计数器
                //对1-100间的数遍历
                for (int i = 1; i < 100; i++) {
                        //遍历所有可能的除数
                        for (int j = 1; j <= i; j++) {
                                if (i % j == 0)
                                        count++;
                        }
                        //将素数存储到list中
                        if(count<=2)
                                list.add(i);
                        //计数器清0
                        count=0;
                }
                //利用增强for循环遍历集合list并打印到控制台
                for(Integer e:list){
                        System.out.print(e+"  ");
                }
        }

}
回复 使用道具 举报
*
* 编程打印所有的3位质数,质数特点:只能被1和其本身整除
*/

public class Test8 {
public static void main(String[] args) {
               
                int i,j;
                //定义两个整型变量i,j;
for( i=1;i<1000;i++)
        //设置第一层for循环;
{       
       
                {for( j=2;j<i;j++)
                        //第二层for循环用于验证第一层给出的数是否是质数;
                       
                        if(i%j==0&&i!=j) break ;
                        //把要验证的数用2到他本身所有的数去除,如果能整出,说明不是质数,则跳出本次循环;
                        if(i==j)
                        System.out.println(i);
                        //如果是质数则输出这个质数;
                }
                       
       
}
        }
}
这是我自己写的,你可以参考下
回复 使用道具 举报
外层定义标记,boolean bool=false; 内层写: if ( a%b == 0 ) bool = true; 然后外层判断布尔值,bool = true , 就不是素数。
回复 使用道具 举报
我是来学习的
回复 使用道具 举报
不错,向各位大神学习
回复 使用道具 举报
大神真多呀
回复 使用道具 举报
我来学习下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马