展开全部
楼上的算法简单明了,但是存在效率问题。
另一种算法(教32313133353236313431303231363533e58685e5aeb931333332623964算法的老师肯定会说这种算法不错,但是实际中基本没人这么写) :
先算出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);
}
}