会java的帮帮我~~java编程:输出200到400间,能被3整除不能被7整除的数的个数

2024-11-06 07:18:12
推荐回答(3个)
回答(1):

楼上的算法简单明了,但是存在效率问题。

另一种算法(教算法的老师肯定会说这种算法不错,但是实际中基本没人这么写) : 

先算出3和7的积 即:能被三整除又能被7整除的数肯定是21(3*7)的倍数。

然后再从200到400之间找到第一个能被3整除的数,在找到最后一个能被3整除的数。两个数之差除以3.这个数是200到400中能被3整除的个数。

接下来用这个数除以刚才的两个数之差除以21

最后将这两个结果相减就行了。代码如下:

public class Example {

public static void main(String args[]){
//3与7互质,那么能被3整除,又能被7整除的肯定是两个数乘积的倍数。
//21
int product = 3*7;
int begin = 200;
int end =400;
//201
int first = begin + 3 - begin%3;
//398
int last = end - end%3 ;
//399÷3 - 201÷3 = (399-201)/3
int count_divisibility_3 = (last - first)/3;
//能被三整除,又能被7整除的数
int count_divisibility_product = (last - first)/product ;
//结果
int count_result = count_divisibility_3 - count_divisibility_product ;
System.out.println(count_result);

}
}

回答(2):

public class TestSimple {
public static void main(String[] args) {
int i =200;
int j = 400;
int n =0;
for(;i if(i%3==0&&i%7!=0){
n++;
}
}
System.out.println("200到400之间,能被3整除不能被7整除的数的个数为:"+n);
}
}

回答(3):

public
class
TestSimple
{
public
static
void
main(String[]
args)
{
int
i
=200;
int
j
=
400;
int
n
=0;
for(;iif(i%3==0&&i%7!=0){
n++;
}
}
System.out.println("200到400之间,能被3
整除
不能被7整除的数的个数为:"+n);
}
}