Java中求1~1000之间可以同时被3、5、7整除的数字public class DemoTest20
{
public static void main (String args[])
{
int sum = 0;
for (int a=1;a<=1000 ;a++ )
{
if(a%3==0 && a%5==0 && a%7==0)
{
sum+=a;
}
}
System.out.println("1~1000之间能够同时被3、5、7整除的数字为:" + sum);
}
}运行结果为:4725不知道程序写的对不对 ,麻烦大家给个思路或者代码 小弟不胜感激。新手~~

解决方案 »

  1.   

    3*7*5=105 所以应该至少有105, 所以你的结果肯定不对了。 sum += a;是干什么的?你是求和吗?public static void main(String[] args){
    int sum = 0;
            for (int a=1;a<=1000 ;a++ )
            {
                if(a%3==0 && a%5==0 && a%7==0)
                {
    //                sum+=a;
                    System.out.println("1~1000之间能够同时被3、5、7整除的数字为:" + a);
                }    
            }    
            
    这样看看行不行
    结果:1~1000之间能够同时被3、5、7整除的数字为:105
    1~1000之间能够同时被3、5、7整除的数字为:210
    1~1000之间能够同时被3、5、7整除的数字为:315
    1~1000之间能够同时被3、5、7整除的数字为:420
    1~1000之间能够同时被3、5、7整除的数字为:525
    1~1000之间能够同时被3、5、7整除的数字为:630
    1~1000之间能够同时被3、5、7整除的数字为:735
    1~1000之间能够同时被3、5、7整除的数字为:840
    1~1000之间能够同时被3、5、7整除的数字为:945
      

  2.   

    public class DemoTest20
    {
        public static void main (String args[])
        {
            String sNumber = "";
            int temp = 3*5*7;
            int number = temp;
            
            while (number <= 1000) {
                 sNumber += number + "  ";
                 number += temp; 
            }
           
            System.out.println("1~1000之间能够同时被3、5、7整除的数字为:" + sNumber );
        }
    }
      

  3.   

    public static void main(String args[]){
    int divide = 3*5*7;
     for (int a=divide; a<=1000; a++ ){
     if(a%divide==0)
     System.out.println(a); 
     }
    }
    输出:
    105
    210
    315
    420
    525
    630
    735
    840
    945
      

  4.   

    直接3*5*7有点草率吧,虽然对这道题没问题,但是如果两两不互质呢?
    或许写一个求LCM的方法比较有通用性
      

  5.   


    public class DemoTest20
    {
        public static void main (String args[])
        {
            System.out.println("1~1000之间能够同时被3、5、7整除的数字为:");
            for (int a=1;a<=1000 ;a++ )
            {
                if(a%3==0 && a%5==0 && a%7==0)
                {
                    System.out.print(a + " ");
                }    
            }    
            System.out.println();
        }
    }
      

  6.   


    import java.util.ArrayList;public class test {  /**
       * @param args
       */
      public static ArrayList  div(int  temp) {
        ArrayList resultList = new ArrayList();
        for(int i=0;i<temp;i++) {
          if(i%3==0 && i%5==0 && i%7==0) {
            resultList.add(String.valueOf(i));
          }
          
        }
        
        return resultList;
        
        
      }
      
      public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println(div(1000).toString());  }}
      

  7.   


    public class DemoTest20{
    public static void main(String[] args) {
    for(int a=0;a<=1000;a++){
    if(a%3==0 && a%7==0 && a%5==0){
    System.out.println(a);
    }
    }
    }
    }一下子就行了。。
      

  8.   

    你的ArrayList直接定义成ArrayList<Integer>不就好了  省了这句String.valueOf(i)
      

  9.   


    只是对这道题而已,如果非要这么说,难道把3,5,7直接放入函数里面(a%3==0 && a%7==0 && a%5==0)就是对的吗?
      

  10.   

    其实,面对任何一个问题,都有两类的解决方案,一类是想兼容别的情况,也就是想要一个办法尽可能多地handle各种情况,还有一种办法就是只针对这一种情况,专门地提供一种方法。前者,兼容性更好,后者,可能效率更高。对于这类找数问题,如果能在编程前优化算法,那就优化。就跟求1000内的质数一样,你没有必要循环1000次。
      

  11.   

    hmmm,求出最小公倍数之后我觉得我也会用这样直接加的方法……前面真是不好意思啊,似乎引起了一些矛盾额……
      

  12.   

    public class Test {
    public static void main(String[] args){
    for(int i = 105; i <= 1000; i+=105)
    System.out.println(i);
    }
    }就可以这么写了