因此,对于课程,我们正在使用素数进行一些加密/解密算法。我是制作该计划的第一部分。我试图让程序检查数字是否为素数。在此之后,我希望程序将该数字之前的所有素数存储在名为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();
}
}
}
答案 0 :(得分:3)
问题是这个条件 -
if (n - 1 % 2 == 1)
此排版被视为 (n-(1 % 2))==1
,因为%
的优先级高于<{em> ,因此,-
首先评估。由于1 % 2
为1 % 2
且表达式为1
,因此在n-1
为true
之前条件不会为n
(< em>不是你想要的)。
你需要这样写 -
2