`

不使用/,%,+和*,如何判断一个数能否被3整除

 
阅读更多

如果n的二进制末位为0,那么n和n>>1同时被3整除或者不整除

如果n的二进制末位为1,那么n和(n>>1)-1同时被3整除或者不整除

 

3是一个比较特别的数,其二进制表示是0b11,也就是说任何一个数乘以3的结果实际上是这个数与其左移1位后相加的结果。现在给出一个数a,假设它能被3整除,结果是b,即a=3*b,那么从二进制乘法运算判断出,b的最低位与a的最低位一定是相同的,从而得到了b的最低位,将这个位左移1位变成次低位,那么a的次低位以上的比特减去这个位后在次低位上的结果一定是b的次低位。以此类推可以求出b的各个比特,如果最后能完成对b的各位的计算,那么a能够被3整除,否则不能被3整除。

 

bool IsTimesOf3(int n)  
{  
    int s;  
    if (n < 0)  
        n = - n;  
    while (n > 0)  
    {  
        s = n & 1;  
        n >>= 1;  
        n = n - s;  
    }  
    return (n == 0);  
}

分享到:
评论

相关推荐

    判断每个输入的数是否可被3,5和7整除,并将整除状态输出。

    本题目要求我们编写一个程序,检查用户输入的每一个数是否可以被3,5和7整除,并根据整除状态给出相应的输出。下面我们将详细探讨如何实现这个功能,以及涉及到的相关知识点。 首先,我们需要理解整除的概念。如果...

    MATLAB程序设计例题及答案.pdf

    第二个例子是找到1到100中同时能被3和7整除的数的和。这里使用了`mod()`函数来检查整除性,并用for循环遍历数组,当条件满足时累加到`s`中。 3. **自定义函数与异常处理**: 阶乘图的绘制展示了自定义函数的编写...

    从键盘输入一个整数,判断能否同时被2和3整除。

    从键盘输入一个整数,判断能否同时被2和3整除。 欢迎大佬指教

    判断一个素数能被几个9整除

    2. **被整除的概念**:如果一个数A可以被另一个数B整除,意味着A除以B的结果为整数且没有余数。这里涉及到的基本数学运算是除法。 #### 二、程序逻辑分析 本程序的主要功能是判断一个输入的素数可以被多少个连续的9...

    1.4.8判断一个数能否同时被3和5整除.cpp

    openjudge1.4编程基础之逻辑表达式与条件分支1.4.8判断一个数能否同时被3和5整除,c++萌新参考代码

    判断文件数据能否被3.5.7整除

    3. 整除判断:判断一个数n能否被3、5、7整除,可以用模运算符 `%`。如果`n % 3 == 0`,那么n能被3整除;同理,`n % 5 == 0`和`n % 7 == 0`分别表示n能被5和7整除。若要同时满足三个条件,可以写为`n % 3 == 0 and n ...

    输入两个数,输出在它们之间所有能被3整除的数-C语言代码

    标题中的“输入两个数,输出在它们之间所有能被3整除的数”是一个典型的编程问题,主要涉及C语言的基础语法、循环结构以及条件判断。接下来,我们将详细讲解这个任务的相关知识点。 首先,C语言是一种高级编程语言...

    实验1_被3整除_被7整除_被5整除_

    这个实验"实验1_被3整除_被7整除_被5整除_"就是这样的一个例子,它要求我们编写程序来接收用户输入的一个整数,并确定这个数是否能被3、5或7整除。这涉及到基本的算术运算和条件判断语句,是计算机科学基础课程中...

    C语言程序设计-编写函数判断一个整数能否同时被3和5整除,若能则返回值为1,否则为0

    C语言程序设计-编写函数判断一个整数能否同时被3和5整除,若能则返回值为1,否则为0;调用该函数求出15~300之间能同时被3和5整除的数的个数;.c

    有限自动机判断01二进制代码是否能被3整除C++代码

    本问题的核心是使用有限自动机来判断一个二进制序列是否能被3整除。这个问题可以通过构建一个确定的有限状态自动机(Deterministic Finite Automaton, DFA)来解决。 首先,我们需要理解为什么二进制数字可以被3...

    能被3,5,7整除的数

    “能被3,5,7整除的数”指的是一个数字如果同时能够被3、5和7这三个数整除(即除以这些数后余数为零),那么这个数字就符合我们的需求。这个概念涉及到的数学知识主要是关于数的因子和除法的性质。 ### C++实现分析 ...

    有趣是正则表达式,可以被3整除的二进制数

    本文将探讨如何使用正则表达式判断二进制数的整除性,特别是如何使用正则表达式判断一个二进制数是否可以被3整除。 首先,让我们来看一下正则表达式的基本概念。正则表达式是一个字符串,用于描述某种模式或规则。...

    javascript输出两个数之间能被5整除的数的和

    - `n` 是一个整型变量,用于存储最终的结果,即两个数字之间所有能被5整除的数字之和。 - 初始化为0,保证后续的加法运算正确无误。 #### 2. 用户输入 ```javascript var a = parseInt(prompt("请输入第一个数:"))...

    5个数能否被27整除

    - **知识点概述**:`if (a % 27 == 0)` 判断 `a` 是否能被 27 整除,如果是,则输出 "YES",否则输出 "NO"。类似的条件语句被重复应用于变量 `b`、`c`、`d` 和 `e`。 - **语法结构**:`if (条件) { 语句块; } else {...

    能被2、5、3整除的数_综合练习二.pdf

    2. 能被某个数整除的判断方法:判断一个数能否被另一个数整除,可以通过除法来确定。如果一个数能够被另一个数整除,那么这个数除以那个数的余数就是0。 3. 能被多个数整除的判断方法:如果一个数能够被多个数整除...

    被11整除问题C语言代码

    一个正整数如果能被11整除,则该数的奇数位上的数字之和与偶数位上的数字之和的差必须是11的倍数(包括0)。例如,对于数字`121`: - 奇数位:1 + 1 = 2 - 偶数位:2 - 差值为:2 - 2 = 0 因为0是11的倍数,所以121...

    1000-4000能被7和17整除的数

    标题中的“1000-4000能被7和17整除的数”是一个编程问题,涉及计算机科学中的数字处理、条件判断和循环结构。在Delphi编程环境中,这个问题可以通过编写一个简单的算法来解决。以下是相关知识点的详细说明: 1. **...

    能被2、3、4、5、6、7、8、9等数整除的数的特征.pdf

    2. **能被3整除的数**:如果一个数的所有数字相加的和能被3整除,那么这个数本身也能被3整除。例如,153(1+5+3=9,9能被3整除)。 3. **能被4整除的数**:一个数如果它的后两位组成的数字能被4整除,那么原数就能...

    找出100~200之间,所有既能被3整除还能被5整除的数,并统计出数量

    if (i % 3 == 0 && i % 5 == 0) { // 检查是否能同时被3和5整除 System.out.println(i); // 输出符合条件的数字 count++; // 计数器加一 } } System.out.println("数量" + count); // 输出符合条件的数字数量 ...

    c# 整除3,5,7

    标题“c# 整除3,5,7”表明我们要讨论的是如何在C#程序中判断一个数是否能被3、5、7整除。下面我们将深入探讨这个主题。 首先,我们需要了解C#中的除法运算符 `/` 和模运算符 `%`。除法运算符 `/` 返回两个数相除的...

Global site tag (gtag.js) - Google Analytics