题解 B2043 【判断能否被 3,5,7 整除】
题解
观察发现,
本题还有一个很好的性质:如果
顺便挂两个在本题没啥用,但以后或许有用的性质:
-
一个数能被
3 整除,当且仅当它的十进制下每一位的和能被3 整除。证明如下:n=\sum_{i=0}^k x_i\cdot 10^i\equiv \sum_{i=0}^k x_i\cdot (10^i\bmod 3)\equiv \sum_{i=0}^k x_i \pmod 3 其中,
x_i 表示n 在十进制下每一位的值,k 是n 的位数。 -
一个数能被
5 整除,当且仅当它的十进制下最后一位是0 或者5 。同样可以用3 的结论来证明,因为i>0 时10\equiv 0\pmod 5 ,于是只要看最后一位。而最后一位能被5 整除,显然只能是0 或5 。
参考代码
#include<bits/stdc++.h>
using namespace std;
int n;
int main(){
cin>>n; for(int i=3;i<=7;i+=2) if(n%i==0) printf("%d ",i);
return 0;
}