C 确定用户输入的数字是否为素数的程序

C 确定用户输入的数字是否为素数的程序,c,C,这段代码在C中是什么样子的?我确实尝试过在javascript上实现它,但不知道如何进行太多的循环。 确定用户输入的数字是否为素数的程序 号码。程序将继续询问号码,直到用户输入 值小于2。该程序必须使用模块实现。 例如: Enter a number: 4 4 is not a prime number Enter a number: 5 5 is a prime number Enter a number: 0 intmain() { int n,i=3,计数,c; printf(“输

这段代码在C中是什么样子的?我确实尝试过在javascript上实现它,但不知道如何进行太多的循环。 确定用户输入的数字是否为素数的程序 号码。程序将继续询问号码,直到用户输入 值小于2。该程序必须使用模块实现。 例如:

Enter a number: 4
4 is not a prime number 
Enter a number: 5
5 is a prime number 
Enter a number: 0

intmain()
{
int n,i=3,计数,c;
printf(“输入所需的素数\n”);
scanf(“%d”和“&n”);
如果(n>=1)
{
printf(“前%d个素数是:\n”,n);
printf(“2\n”);
}

对于(count=2;count这是一般的非优化算法:

int n;
do
{
    printf("Enter the number: ");
    scanf("%d",&n);

    if (n >= 2) // check if number is prime, general algorithm
    {
        bool prime = true;
        for (int j=2; j<n; j++)
            if ( (n%j) == 0) // n is divided by j without modulus - is it not prime
            {
                prime = false;
                break;
            }

        if (prime)
            printf("prime\n");
        else
            printf("is not prime\n");
    }
} while (n >= 2);
intn;
做
{
printf(“输入数字:”);
scanf(“%d”和“&n”);
if(n>=2)//检查数字是否为素数,通用算法
{
布尔素数=真;
对于(int j=2;j=2);
这是一个更新版本,它使用了所有偶数都不是素数的事实,检查大于N/2的数是没有意义的

int n;
do
{
    printf("Enter the number: ");
    scanf("%d",&n);

    if (n >= 2) // check if number is prime, general algorithm
    {
        bool prime = true; // for n=2 prime is true
        if (n > 2)
            prime = n & 1; // number at least odd

        if (prime)
        {
            // starts with 3
            for (int j=3; j<=(n>>1); j+=2)
                if ( (n%j) == 0) // n is divided by j without modulus - is it not prime
                {
                    prime = false;
                    break;
                }
        }

        if (prime)
            printf("prime\n");
        else
            printf("is not prime\n");
    }
} while (n >= 2);
intn;
做
{
printf(“输入数字:”);
scanf(“%d”和“&n”);
if(n>=2)//检查数字是否为素数,通用算法
{
bool prime=true;//对于n=2,prime为true
如果(n>2)
prime=n&1;//数至少为奇数
if(prime)
{
//从3开始
对于(int j=3;j>1);j+=2)
如果((n%j)=0)//n除以j,不带模数-它不是素数吗
{
素数=假;
打破
}
}
if(prime)
printf(“prime\n”);
其他的
printf(“不是素数\n”);
}
}而(n>=2);

实际上,只需检查sqrt(n)就足够了,这将使您的代码运行得更快


您可以在post上查看其他有用的方法。

@rahultripath该部分可能意味着用户输入
5
,而程序输出的
5不是质数。
。编辑:查看post源代码表明情况就是这样。@rahultripath即
4
(格式化问题!!知道这一点,我可以重新分配我的业余时间。同意@ronenkr-你可以放心地用sqrt(n)替换(n>>1)
int n;
do
{
    printf("Enter the number: ");
    scanf("%d",&n);

    if (n >= 2) // check if number is prime, general algorithm
    {
        bool prime = true; // for n=2 prime is true
        if (n > 2)
            prime = n & 1; // number at least odd

        if (prime)
        {
            // starts with 3
            for (int j=3; j<=(n>>1); j+=2)
                if ( (n%j) == 0) // n is divided by j without modulus - is it not prime
                {
                    prime = false;
                    break;
                }
        }

        if (prime)
            printf("prime\n");
        else
            printf("is not prime\n");
    }
} while (n >= 2);