会java的帮帮我~~java编程:输出200到400间,能被3整除不能被7整除的数的个数
3个回答
展开全部
楼上的算法简单明了,但是存在效率问题。
另一种算法(教算法的老师肯定会说这种算法不错,但是实际中基本没人这么写) :
先算出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);
}
}
展开全部
public class TestSimple {
public static void main(String[] args) {
int i =200;
int j = 400;
int n =0;
for(;i<j;i++){
if(i%3==0&&i%7!=0){
n++;
}
}
System.out.println("200到400之间,能被3整除不能被7整除的数的个数为:"+n);
}
}
public static void main(String[] args) {
int i =200;
int j = 400;
int n =0;
for(;i<j;i++){
if(i%3==0&&i%7!=0){
n++;
}
}
System.out.println("200到400之间,能被3整除不能被7整除的数的个数为:"+n);
}
}
更多追问追答
追问
不对啊,大哥,那个n打印了好多次啊……
我说的是打印出一个……
追答
请仔细看看for循环到哪里结束,这个类你运行一下就知道了,只打印了一行。
200到400之间,能被3整除不能被7整除的数的个数为:57
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public
class
TestSimple
{
public
static
void
main(String[]
args)
{
int
i
=200;
int
j
=
400;
int
n
=0;
for(;i<j;i++){
if(i%3==0&&i%7!=0){
n++;
}
}
System.out.println("200到400之间,能被3
整除
不能被7整除的数的个数为:"+n);
}
}
class
TestSimple
{
public
static
void
main(String[]
args)
{
int
i
=200;
int
j
=
400;
int
n
=0;
for(;i<j;i++){
if(i%3==0&&i%7!=0){
n++;
}
}
System.out.println("200到400之间,能被3
整除
不能被7整除的数的个数为:"+n);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |