精华内容
下载资源
问答
  • 判断一个正整数是否是2的整数幂(如4是2的2次方,返回true;5不是2的整数次幂,则返回false)。要求性能尽可能高。 第一种考虑(乘法)创建一个中间变量temp,初始值是1,然后进入一个循环,每次循环都让temp和目标值...

    判断一个正整数是否是2的整数幂(如4是2的2次方,返回true;5不是2的整数次幂,则返回false)。要求性能尽可能高。

    第一种考虑(乘法)

    创建一个中间变量temp,初始值是1,然后进入一个循环,每次循环都让temp和目标值进行比较,如果相等,则说明目标是2的整数次幂,

    如果不相等,则让temp乘以2,继续循环比较,直到temp的值大于目标整数时,说明整数不是2的整数次幂。

    比如:18

    1*2=2;2比18小继续

    2*2=4;4比18小继续

    4*2=8;8比18小继续

    8*2=16;16比18小继续

    16*2=32;32比18大退出循环,说明18不是2的整数幂。

    如果目标整数的大小是n,则此方法循环次数是logn。

    代码如下:

     1 public static boolean is2Power1(int num) { 2 int temp = 1; 3 while (temp <= num) { 4 if (temp == num) { 5 return true; 6 } 7 temp = temp << 1; 8 // temp = temp * 2; 9 }10 return false;11 }

    想一想,有没有更好的办法?

    第二种考虑(除法)

    2的整数次幂都能被2整除,所以进入一个循环,让目标对2求余,如果有余数,则目标不是2的整数次幂,

    如果没有余数,然后目标赋值为目标除以2,直到目标小于1,当目标小于1的时候则说明明目标是2的整数次幂。

    比如:18

    18%2=0;18被2整除

    18/2=9;目标赋值为9

    9%2=1;9没被2整除退出循环,说明18不是2的整数幂。

    如果目标整数的大小是n,则此方法循环次数有可能是1,2,3,4,...logn次。

    代码如下:

     1 public static boolean is2Power2(int num) { 2 while (num > 1) { 3 if (num % 2 == 1) { 4 return false; 5 } 6 // num = num / 2; 7 num = num >> 1; 8 } 9 return true;10 }

    再想一想,有没有更好的办法?

    第三种考虑(位运算)

    让我们看看2的整数次幂转成二进制是什么样的

    54408d07f76b1a418898b33985925fef.png

    是不是发现了,如果一个整数是2的整数次幂,那么当它转化成二进制时,只有最高位是1,其它位都是0!如果把这2的整数次幂各自减去1,在转换成二进制,会是什么样呢?

    ae0f4b05c8f3911058da07406769c279.png
    f76ef2d3e395124bcd6395a6471f9b15.png

    怎么样会写代码了吗?

    代码如下:

    1 public static boolean is2Power3(int num) {2 return (num & num - 1) == 0;3 }

    原文:https://www.cnblogs.com/javaExperience/p/11465356.html

    展开全文
  • 利用VB编程,判断一个正整数是否是素数。如果输入的数字不符合规范,则给出提示,并不予以计算。如果是素数则提示“是素数”,如果不是素数,则给出提示“不是素数”,并且给出不是素数的理由,例如9不是素数,因为9...
  • Hello,各位小伙伴,本节课程我们做一个小练习——如何用VB来检测某个数是不是素数? 首先,我们来看下素数的概念。 素数定义:质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。 从定义中不难...

    Hello,各位小伙伴,本节课程我们做一个小练习——如何用VB来检测某个数是不是素数?

    首先,我们来看下素数的概念。

    素数定义:质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

    从定义中不难分解出以下几个条件:
    1,素数是大于1的。
    2,素数是一个自然数,即它必须是一个整数。
    3,素数只能被自己或者1整除。

    例如:数值5,它只能被1和5整除,且满足条件1和条件2,所以它是一个素数。而数值6,它除了可以被1和6整除外,还可以被2和3整除,因此6不是一个素数。

    好了,既然我们已经弄明白了,素数的含义,并将其转化为3个条件。接下来就可以设计程序了。

    首先,我们参照下图设计一个程序界面:

    在这里插入图片描述

    接着,我们可以开始编写代码了:
    详细代码及注释如下所示:

    Private Sub Command1_Click()    
        Dim num As Single   '用于存储用户输入的数
        Dim i&              '用于循环变量
        Dim flag As Boolean '定义一个标记符变量
        
    '获取用户输入数据,并转化为数值型    
        num = Val(Text1.Text)    
        
    '判断输入数据是否大于1,不是的话退出事件过程    
        If num <= 1 Then        
            MsgBox "请输入大1的整数"        
            Exit Sub    
        End If    
    
    '判断输入数据是否是整数,不是的话退出事件过程    
        If num <> Int(num) Then        
            MsgBox "请输入整数"        
            Exit Sub    
        End If    
    
        flag = True     '将标记符置为真
    
    '开始循环    
        For i = 2 To num - 1       
            'mod结果为0表示可以num整i,即num不是素数        
            If num Mod i = 0 Then             
                flag = False    '将flag标记符置假,代表num不是素数            
                '输出结果,注意有空格+下划线表示续行符           
                MsgBox num & "不是素数" &  _
                "(" & i & "*" & (num / i) & "=" & num & ")" 
                Exit For    '退出循环        
            End If        
            DoEvents    
        Next i    
        
        '如果flag是真,那么输出结果为素数    
        If flag Then        
            MsgBox num & "是素数"    
        End If    
    End Sub
    

    最后,代码编写好后,可以进行调试。我们运行程序,然后输入一个数,测试效果。如下图所示:

    在这里插入图片描述

    总结:
    解决这类问题时,最重要的是先设计算法,代码和界面并不难,但是算法的设计是核心,在正式编写代码前,一定要想明白算法逻辑,可以尝试在脑海中构思清楚,也可以在纸上写/画出来。

    好了,本节课程就学习到这里,小伙伴们一定要勤加练习哦。后面,我会做一篇练习题,用VB验证哥德巴赫猜想。其中将会用到本文素数判断的代码。

    本文案例的源码免费下载地址:

    https://download.csdn.net/download/weixin_39433293/12446003

    展开全文
  • 编一函数过程IsH(n),对于已知正整数n,判断该数是否是回文数,函数的返回值类型布尔型。主调程序每输入一个数,调用IsH函数过程,然后在图形框显示输入的数,对于是回文数显示一个”★”,如下图: 提示 ...

    题目来源:大工慕课 链接
    原题:Visual Basic程序设计教程(第二版)龚沛曾主编,高等教育出版社 实验6-5
    作者:Caleb Sung

    题目要求

    编一函数过程IsH(n),对于已知正整数n,判断该数是否是回文数,函数的返回值类型为布尔型。主调程序每输入一个数,调用IsH函数过程,然后在图形框显示输入的数,对于是回文数显示一个”★”,如下图:
    这里写图片描述

    提示

    1. 所谓回文数是指顺读与倒读数字相同,即指最高位与最低位相同,次高位与次低位相同,依次类推。当只有一位数时,也认为是回文数。
    2. 回文数的求法,只要对输入的数(按字符串类型处理),利用MID函数从两边往中间逐位比较,若不相同,就不是回文数。

    参考代码

    Private Sub Text1_KeyPress(KeyAscii As Integer)
        If KeyAscii = 13 Then
            If Not IsNumeric(Text1) Then
                MsgBox "输入非数字串,重新输入"
                Text1.Text = ""
                Text1.SetFocus
            Else
                If IsH(Text1) Then
                    Picture1.Print Text1; " ★ "
                Else
                    Picture1.Print Text1
                End If
                Text1 = ""
            End If
        End If
    End Sub
    
    Function IsH(ss As String) As Boolean
        Dim i%, Ls%
        IsH = True
        ss = Trim(ss)
        Ls = Len(ss)
        For i = 1 To Ls \ 2
            If Mid(ss, i, 1) <> Mid(ss, Ls + 1 - i, 1) Then
                IsH = False
                Exit Function
            End If
        Next i
    End Function
    
    展开全文
  • VB中原有一个 isnumeric()函数来判断 到了C#.net中却没有了。 网上很多用的是try{}来做,这一方法不是不行,但是,由于这个是用catch一个...//判断是否为整数  public static bool IsInt(string inString)  {  

    在VB中原有一个 isnumeric()函数来判断
    到了C#.net中却没有了。

    网上很多用的是try{}来做,这一方法不是不行,但是,由于这个是用catch一个错误来实现,会导致数据比较慢(个人尝试过,觉得慢多了),所以,以下方法使用的是一个正则表达式得来的

        //判断是否为正整数
        public static bool IsInt(string inString)
        {
            Regex regex = new Regex("^[0-9]*[1-9][0-9]*$");
            return regex.IsMatch(inString.Trim());
        }

    用这个方法除了判断是否为数字还可以判断其他的,比如判断E-mail格式是否正确等等,只要正则表达式支持的,这里都支持,只需要把正则表达式替换了代码中蓝色的部分即可,关于正则不会的,可以在我BLOG里找,有一篇正则的介绍,相当全面!

    几个正则表达式的例子:

    "^\\d+$"  //非负整数(正整数 + 0)
    "^[0-9]*[1-9][0-9]*$"  //正整数   
    "^((-\\d+)|(0+))$"  //非正整数(负整数 + 0)   
    "^-[0-9]*[1-9][0-9]*$"  //负整数   
    "^-?\\d+$"    //整数   
    "^\\d+(\\.\\d+)?$"  //非负浮点数(正浮点数 + 0)   
    "^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$" 
    //正浮点数   
    "^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"  //非正浮点数(负浮点数 + 0)   
    "^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" 
    //负浮点数   
    "^(-?\\d+)(\\.\\d+)?$"  //浮点数   
    "^[A-Za-z]+$"  //由26个英文字母组成的字符串   
    "^[A-Z]+$"  //由26个英文字母的大写组成的字符串   
    "^[a-z]+$"  //由26个英文字母的小写组成的字符串   
    "^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串   
    "^\\w+$"  //由数字、26个英文字母或者下划线组成的字符串   
    "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"    //email地址   
    "^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"

    展开全文
  • 网上很多用的是try{}来做,这一方法不是不行,但是,由于这个是用catch一个错误来实现,会导致数据比较慢(个人尝试过,觉得慢多了),所以,以下方法使用的是一个正则表达式得来的 //判断是否为整数 public ...
  • VB6关于判断模态窗体的问题

    千次阅读 2013-08-23 06:02:46
    模态窗体也有人叫模式窗体,是否为模态窗体由Show方法的参数决定: 语法 object.Show style, ownerform Show 方法的语法包含下列部分: 部分 描述 object 可选的。一个对象表达式,其值为“应用于”列表中的一个...
  • 编写一个函数IsWs(m)判断m是否为完数,函数的返回值是逻辑型。主调程序在列表框显示1000以内的完数,如图F.4所示。提示:判断一个数m是否是完数,算法思想是:将m依次除以1~m/2,如果能整除,就是m的一个因子,进行...
  • 用java 编写一个程序,接受用户输入的一段英文文字,统计出其中的字符个数、单词个数和句子的个数....\x05\x05Scanner编写程序,判用户输入的数是否为整数;如是,判断其奇偶性…是VB吗再问:恩再答:X=inputbox(“...
  • ②每个可能的值去判断是否符合我们需要的条件。2.质数(prime number)又称素数,有无限个。质数定义在大于1的自然数中,除了1和它本身以外不再有其他因数。换句话说,质数大于1的只能被1和它自己本身整除的整数。3....
  • 试编写一个Function过程Automorphic,其形参为一正整数判断是否为守形数,然后用该过程查找1-1000内的所有守形数。 Private Sub Form_click() Dim n As Single 'n不可使用integer,如使用integer则会...
  • 一个整数对表示两个对象之间是相连的 相连关系:一种等价关系,具有自反性、对称性,传递性 问题核心:设计数据结构保存已知整数对以及它们的相连信息,并用此数据结构判断一对新对象是否相连 限定问题范围,现...
  • 题目来源:大工慕课 链接 原题:Visual Basic程序设计教程(第二版)龚沛曾主编,高等教育出版社 实验6-...编写一个函数IsWs(m)判断m是否为完数,函数的返回值是逻辑型。主调程序显示1000以内的完数,如图所示。 ...
  • 参数 地址, 整数型, 可空, 如Hex2Dec (“00401000”),用来判断是否解码完成;如果没壳,就空着 .子程序 inline_patch1, 逻辑型, 公开, patch尚未运行的,没加壳的程序,并运行它 .参数 文件名, 文本型, , 文件全...
  • 022(n>0 && ((n & (n-1)) == 0)) (keep it up)

    千次阅读 2014-09-12 00:47:56
    很简单:判断n是否为2的整数次幂 写程序计算从整数A变为整数B需要修改的二进制位数。 输入:31,14 输出:2 这个题也很简单:A和B异或然后再算结果中1的个数 代码: int getModifyNum(const int vA, const int ...
  • 不知道有人做没做过对日外包,如果做过的话,那么对vb.net应该非常熟悉了,当年... ①:在C#中我们可能会用TryParse来判断当前的”a“是否为整数。 代码如下:static void Main(string[] args) { var a = “a”;  
  • 16.2.1 判断文件是否为PE格式 16.2.2 文件基本数据读入 16.2.3 附加数据读取 16.2.4 输入表处理 16.2.5 重定位表处理 16.2.6 文件的压缩 16.2.7 资源数据处理 16.2.8 区块的融合 16.3 外壳部分编写 16.3.1 外壳的...
  • 修改扩展界面支持库一,“树形框”增加“是否已加粗()”方法。 16. 修改扩展界面支持库一,“树形框”增加多态检查框功能,相应地添加了多个与检查框相关的属性、方法和事件。 17. 修改高级表格支持库,允许...
  • 笔者在此指定其一种类C++/MATLAB/VB/Java等高级语言的运算输入规则,以与通用的软件和人们的书写习惯基本相同。此种类MATLAB运算规则基本与MATLAB软件的语法相同,但也同时兼容其他语言如:C/C++、VB、Pascal等,...
  • java源码包---java 源码 大量 实例

    千次下载 热门讨论 2013-04-18 23:15:26
    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...
  • Java开发技术大全(500个源代码).

    热门讨论 2012-12-02 19:55:48
    HelloNativeTest.java 测试本地化是否成功的类文件 instanceVar.java 定义一个实例成员变量 invokeByObject.java 对象实参传递示例程序 invokeByValue.java 传值调用示例程序 invokeMethod.java 同一个类中调用...
  • java源码包2

    千次下载 热门讨论 2013-04-20 11:28:17
    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 ...
  • 像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...
  • java源码包3

    千次下载 热门讨论 2013-04-20 11:30:13
    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 ...
  • 像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...
  • 像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...

空空如也

空空如也

1 2
收藏数 31
精华内容 12
关键字:

vb判断是否为整数