Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 打印最大为n的素数_C_Numbers - Fatal编程技术网

C 打印最大为n的素数

C 打印最大为n的素数,c,numbers,C,Numbers,我编写了一些代码,要求用户输入n,然后将素数打印到n。但是,当我使用它时,即使用10,它只打印非素数 /* Asks for the amount of prime numbers you would like to print, then prints them */ #include <stdio.h> int main(void) { int n, i, j, check; printf("How many prime numbers would you

我编写了一些代码,要求用户输入n,然后将素数打印到n。但是,当我使用它时,即使用10,它只打印非素数

 /* Asks for the amount of prime numbers you would like to print, then prints them */

#include <stdio.h>

int main(void)
{
    int n, i, j, check;
    printf("How many prime numbers would you like to print? ");
    scanf("%d", &n);

    for (i = 2; i <= n; i++) {
        check = 0;

        for (j = 2; j < i ; j++) { 
            if (i % j == 0) {
                check = 1;              
                if (check == 1) {
                    printf("%d\n", i);
                }
            }
        }
    }       

    return 0;
}

How many prime numbers would you like to print? 10
4
6
6
8
8
9
10
10
/*询问要打印的素数数量,然后打印它们*/
#包括
内部主(空)
{
int n,i,j,检查;
printf(“您希望打印多少素数?”);
scanf(“%d”和“&n”);

对于(i=2;i这是应该的:

for (i = 2; i <= n; i++)
{
    check = 0;

    for (j = 2; j < i ; j++)
    {

        if (i % j == 0)
        {
            check = 1;
            break;
        }
    }
    if (check == 0)
    {
        printf("%d\n", i);
    }
}

for(i=2;i应该是这样的:

for (i = 2; i <= n; i++)
{
    check = 0;

    for (j = 2; j < i ; j++)
    {

        if (i % j == 0)
        {
            check = 1;
            break;
        }
    }
    if (check == 0)
    {
        printf("%d\n", i);
    }
}

对于(i=2;i,正如天气风向标所说,如果
i
可被
j
整除,则mod运算符
%
返回0,如果这是真的,则该数字是而不是素数。您的条件语句是向后的

#include <stdio.h>
int main(void)
{
   int n, i, j, check;
   printf("How many prime numbers would you like to print? ");
   scanf("%d", &n);

   for (i = 2; i <= n; i++) 
   {
       check = 0;
       for (j = 2; j < i ; j++) 
       { 
           if (i % j == 0) 
           {
               check = 1;
               break;
           }
       }
       if (check == 0)
       {
           printf("%d\n", i);
       }
   }

   return 0;
}

How many prime numbers would you like to print? 10
2
3
5
7
#包括
内部主(空)
{
int n,i,j,检查;
printf(“您希望打印多少素数?”);
scanf(“%d”和“&n”);

对于(i=2;i,正如天气风向标所说,如果
i
可被
j
整除,则mod运算符
%
返回0,如果这是真的,则该数字是而不是素数。您的条件语句是向后的

#include <stdio.h>
int main(void)
{
   int n, i, j, check;
   printf("How many prime numbers would you like to print? ");
   scanf("%d", &n);

   for (i = 2; i <= n; i++) 
   {
       check = 0;
       for (j = 2; j < i ; j++) 
       { 
           if (i % j == 0) 
           {
               check = 1;
               break;
           }
       }
       if (check == 0)
       {
           printf("%d\n", i);
       }
   }

   return 0;
}

How many prime numbers would you like to print? 10
2
3
5
7
#包括
内部主(空)
{
int n,i,j,检查;
printf(“您希望打印多少素数?”);
scanf(“%d”和“&n”);
对于(i=2;i几个问题

首先,当您设置
check=1
时,这意味着
i
等分,因此
n
不是素数,因此您不应该打印它。您应该在
check==0
时打印数字

其次,每次都要通过内部循环进行打印。应该在循环结束时测试
check
,以确保没有一个数字将其除以

作为一种改进,一旦找到一个等分的数字,就不需要继续检查。因此,只要设置
check=1
,就可以打破内部循环

#include <stdio.h>

int main(void)
{
    int n, i, j, check;
    printf("How many prime numbers would you like to print? ");
    scanf("%d", &n);

    for (i = 2; i <= n; i++) {
        check = 0;

        for (j = 2; j < i ; j++) { 
            if (i % j == 0) {
                check = 1;
                break;
            }
        }
        if (check == 0) {
            printf("%d\n", i);
        }
    }       

    return 0;
}
#包括
内部主(空)
{
int n,i,j,检查;
printf(“您希望打印多少素数?”);
scanf(“%d”和“&n”);
对于(i=2;i几个问题

首先,当您设置
check=1
时,这意味着
i
等分,因此
n
不是素数,因此您不应该打印它。您应该在
check==0
时打印数字

其次,每次都要通过内部循环进行打印。应该在循环结束时测试
check
,以确保没有一个数字将其除以

作为一种改进,一旦找到一个等分的数字,就不需要继续检查。因此,只要设置
check=1
,就可以打破内部循环

#include <stdio.h>

int main(void)
{
    int n, i, j, check;
    printf("How many prime numbers would you like to print? ");
    scanf("%d", &n);

    for (i = 2; i <= n; i++) {
        check = 0;

        for (j = 2; j < i ; j++) { 
            if (i % j == 0) {
                check = 1;
                break;
            }
        }
        if (check == 0) {
            printf("%d\n", i);
        }
    }       

    return 0;
}
#包括
内部主(空)
{
int n,i,j,检查;
printf(“您希望打印多少素数?”);
scanf(“%d”和“&n”);

对于(i=2;i尝试查看此代码

#include <stdio.h>

int IsPrime(int num)
{
    int i = 2;

    for (i = 2; i < num; i++) if (num % i == 0) return 0;

    return 1;
}

int main(void)

{
    int n, i;
    char *nStr = (char*)malloc(10);

    printf("How many prime numbers would you like to print? ");
    fgets(nStr, 9, stdin);
    n = atoi(nStr);

    for (i = 1; i <= n; i++) if (IsPrime(i)) printf("%d\n", i);

    getchar();
    return 0;
}
#包括
intisprime(intnum)
{
int i=2;
对于(i=2;i对于(i=1;i尝试查看此代码

#include <stdio.h>

int IsPrime(int num)
{
    int i = 2;

    for (i = 2; i < num; i++) if (num % i == 0) return 0;

    return 1;
}

int main(void)

{
    int n, i;
    char *nStr = (char*)malloc(10);

    printf("How many prime numbers would you like to print? ");
    fgets(nStr, 9, stdin);
    n = atoi(nStr);

    for (i = 1; i <= n; i++) if (IsPrime(i)) printf("%d\n", i);

    getchar();
    return 0;
}
#包括
intisprime(intnum)
{
int i=2;
对于(i=2;i对于(i=1;i
if(i%j==0)
意味着没有余数,也就是说,它不是素数。如果你的输出感觉被颠倒了,这就是一个强烈的提示,让我们看看你的比较。@Barmar这么多人被
1
n
除数,然后检查除数是否超过2!哦,这是一个感叹号,不是一个阶乘,尽管在这种情况下它们是一样的。这是一种如果(检查==1)
在检查=1之后放置
如果(i%j==0)没有用
意味着没有余数,也就是说,它不是素数。如果你的输出感觉被颠倒了,这就是一个强烈的提示,让我们看看你的比较。@Barmar这么多人被
1
n
除数,然后检查除数是否超过2!哦,这是一个感叹号,不是一个阶乘,尽管在这种情况下它们是一样的。这是一种如果(check==1)
正好在
check=1
之后,那么放入
if(check==1)
是无用的。实际上,beyond
sqrt(i)
实际上,beyond
sqrt(i)
免费(nStr)
?是
malloc
对于
int
输入来说有点杀伤力吗?你可以使用一个循环
(i=2;i
因为每个数字都可以被1和自身整除。
free(nStr)
?对于
int
输入,
malloc
是不是有点过了头?你可以使用循环
来(i=2;i
,因为每个数字都可以被1和自身整除。