VB中最小素数的判断问题

VB中最小素数的判断问题,第1张

If prime(arr(i)) = True And arr(i) <= a Then a = arr(i)

改为

If prime(arr(i)) And (arr(i) <= a Or Not prime(a)) Then a = arr(i)

这样的话,当arr(1)是最小数且不是素数时它就不会成为最终结果了

但是还有一种特殊情况需要排除,就是当数组中的所有数字都不是素数时,arr(1)仍然会成为最终结果。解决办法是把

Label4Caption = a

改为

Label4Caption = IIf(prime(a), a, "没有素数")

#include <stdioh>

#include <mathh>

int main()

{

    int i,j,k;

    int flag = 1;  //是否为素数标志  1-非素数,0-素数

    printf("请输入一个正整数:\n");

    scanf("%d",&i);

    if(i<2)

        k=2;

    else

    {

        while(1)  //无限循环,找大于i的下一个素数

        {

            /下面这个for循环判断大于i的下个正整数i+1的是不是素数/

            for(j=2; j<=sqrt(i+1); j++)

            {

                if(((i+1)%j)==0)

                {

                    flag = 0;  //不是素数的话flag置0

                    break;

                }

            }

            if(flag == 1)  //大于i的下一个正整数i+1是素数,找到,跳出

            {

                k=i+1;

                break;

            }

            else

            {

                flag = 1;

                i++;

            }

        }

    }

    printf("大于m的最小素数是%d",k);

    return 0;

}

条件分支覆盖不全,导致k有时未赋值就输出了,就为乱码了

小小修改如上

运行效果如下:

#include <stdioh>

#include <mathh>

int isPrime(int n)

{

    int i;

    for(i = 2; i <= (int)sqrt(n); i ++)

        if(n%i == 0) return 0;

    return 1;

}

int main()

{

    int n, cnt=0;

    for(n = 11; cnt<10; n++)

        if(isPrime(n) && n%10==1) 

        {

            printf("%d ", n);

            cnt++;

        }

    return 0;

}

也可以简化成

#include <stdioh>

#include <mathh>

int isPrime(int n)

{

    int i;

    for(i = 2; i <= (int)sqrt(n); i ++)

        if(n%i == 0) return 0;

    return 1;

}

int main()

{

    int n, cnt=0;

    for(n = 11; cnt<10; n+=10)

        if(isPrime(n)==1) 

        {

            printf("%d ", n);

            cnt++;

        }

    return 0;

}

以上就是关于VB中最小素数的判断问题全部的内容,包括:VB中最小素数的判断问题、c语言中求大于a的最小素数 我编的程序输入一个数却出现了一个乱码,希望帮忙指出错误、C语言程序:输出个位是1的最小10个素数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9657508.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存