C编程,阵列打印不正确

时间:2015-10-29 04:18:37

标签: c++ c encryption

因此,对于课程,我们正在使用素数进行一些加密/解密算法。我是制作该计划的第一部分。我试图让程序检查数字是否为素数。在此之后,我希望程序将该数字之前的所有素数存储在名为prime_array的数组中。我试图让这些结果在屏幕上打印出来。它没有按照我的意图工作。我稍后会用它来解密一些更复杂的东西。如果有人能看到我的代码的哪一部分导致问题,那就徘徊吧。

代码:

  #include <stdio.h>

    int main()
    {
        int n;
        int prime;
        int prime_array[1000];
        int prime_answer;
        int j=0;

        printf("enter a number for n : ");
        scanf_s("%d", &n);   

        if (n % 2 == 1)
        {
            printf("Number is prime.");
            getchar();
            getchar();

            for (int i = 0; i <= n; i++)
            {
                if (n - 1 % 2 == 1)
                {
                    n--;
                    prime_array[j] = n;
                    j++;    
                }
                else
                {
                    // do nothing
                }    
            }    
        }
        else if (n % 2 == 0)
        {
            printf("Number is not prime.");
            getchar();
            getchar();

        }

        for (int k = 0; k<= 10; k++)
        {
            printf("\n\n %d",prime_array[k]);
            if (k == 10);
            {
                getchar();
                getchar();       
            }       
        }        
}

1 个答案:

答案 0 :(得分:3)

问题是这个条件 -

if (n - 1 % 2 == 1)

此排版被视为 (n-(1 % 2))==1 ,因为%优先级高于<{em> ,因此,-首先评估。由于1 % 21 % 2且表达式为1,因此在n-1true之前条件不会为n(< em>不是你想要的)。

你需要这样写 -

2