C++编程判断一个整数能否被3、5、7整除的几种方法

今天开始试着自己找一些试题做,遇到这样一道题:

 

编程实现输入一个整数,判断其能否被3、5、7整除,并输出以下信息之一:
   (1)能同时被3、5、7整除;
   (2)能被其中两个数(要指出哪两个)整除;
   (3)能被其中一个数(要指出哪一个)整除;
   (4)不能被3、5、7任一个整除。

自己写了一段程序,感觉非常的繁琐,于是在网上搜索一些大家编写的简单而又明了的代码如下

 

#include <iostream.h>

void main()
{
     int a;
     cout <<"please input a number:/n";
     cin >>a;

     int c1 = a%3 ==0;
     int c2 = a%5 ==0;
     int c3 = a%7 ==0;
  
     switch((c1<<2)+(c2<<1)+c3)     //可以改成switch((c1*4)+(c2*2)+c3)
     {
       case 0: cout <<"不能被3,5,7整除./n"; break;    
       case 1: cout <<"只能被7整除./n"; break;
       case 2: cout <<"只能被5整除./n"; break;
       case 3: cout <<"可以被5,7整除./n"; break;
       case 4: cout <<"只能被3整除./n"; break;
       case 5: cout <<"可以被3,7整除./n"; break;
       case 6: cout <<"可以被3,5整除./n"; break;
       case 7: cout <<"可以被3,5,7整除./n"; break;
     }
   }

 

 

 

#include <iostream.h>

void main()
{
int x;
short int n=0;
cout<<"请输入一个整数:"<<endl;
cin>>x;
if(x%3!=0&&x%5!=0&&x%7!=0)
{
cout<<"不能被这三个整数中任意一个整除";
return;
}


else

{
cout<<x<<"能被";
if(x%3==0)
{cout<<"3 ";
n++;
}

if(x%5==0)
{cout<<"5 ";
n++;
}

if(x%7==0)
{cout<<"7";
n++;
}
}
cout<<"这"<<n<<"个数整除"<<endl;

}
  

 

 

 

 

 

#include <iostream.h>

void main()
{
 loop:
 int i;
 cin>>i;
 (i%3&&i%5&&i%7)?cout<<"不能3.5.7中任意一个整除":i%3?(i%5?cout<<i<<"能被7整除"
 :(i%7?cout<<i<<"能被5整除":cout<<i<<"能被5.7整除"))
 :(i%5?(i%7?cout<<i<<"能被3整除":cout<<i<<"能被3.7整除")
 :(i%7?cout<<i<<"能被3.5整除":cout<<i<<"能被3.5.7整除"));
 goto loop;
}

 

 

 

 

收集到如上三种可用方法,经测试均可用

 

 

一下是自己的程序

#include <iostream.h>


void main()
{
 int x;
 cout<<"请输入一个整数:"<<endl;
 cin>>x;
 int a,b,c;
 a=x%3;
 b=x%5;
 c=x%7;
 if (a==0)
 {
  if(b==0&&c==0)
   cout<<"该整数能被3、5、7整除"<<endl;
  else if (b==0&&c!=0)
   cout<<"该整数能被3、5整除"<<endl;
  else if (b!=0&&c==0)
   cout<<"该整数能被3、7整除"<<endl;
  else if (b!=0&&c!=0)
   cout<<"该整数只能被3整除"<<endl;
  
 }
 if (a!=0)
 {
  if(b==0&&c==0)
   cout<<"该整数能被5、7整除"<<endl;
  else if (b==0&&c!=0)
   cout<<"该整数只能被5整除"<<endl;
  else if (b!=0&&c==0)
   cout<<"该整数只能被7整除"<<endl;
  else if (b!=0&&c!=0)
   cout<<"该整数不能被3、5、7任何一个整除"<<endl;
  
 }
 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值