我的代码已基本完成,它可以计算2到1000之间的所有素数。但是,我需要编写一个代码来扫描素数数组并打印是否为素数。
对于那些不了解我想要什么的人:计算2至1000之间的所有素数后,我希望用户提供一个随机数,然后告诉用户它是否为素数。使用下面的这段代码,由于某种原因它不起作用...有人可以告诉我我做错了吗?
#include <stdio.h>
#include <stdbool.h>
int main () {
int durch [1000] = {0};
for (int i = 2; i <= 1000; i++)
{
if (!durch[i-2])
{
for (int j = 2*i; j <= 1000; j+= i)
{
durch[j-2] = 1;
}
}
}
int primzahlen [1000];
int anzahl = 0;
int n;
for (int i = 2; i <= 1000; i++)
{
if (!durch [i-2])
{
primzahlen[anzahl] = i;
anzahl++;
// printf ("%i : %i\n", anzahl, i);
scanf ("%i\n", &n);
if (n = primzahlen[anzahl]){
printf ("Yes it is a prime!\n");
break;
}
else {
printf ("No it isnt a prime!\n");
break;
}
}
}
return 0;
}
我真的无法弄清楚那部分。.我觉得我想念什么吗?有人可以帮我吗?
答案 0 :(得分:2)
程序的第二部分不是必需的。您可以将其简化为:
#include <stdio.h>
#include <stdbool.h>
int main () {
int i;
int durch [1000] = {0};
int n;
for (i = 2; i <= 1000; i++)
{
if (!durch[i-2])
{
for (int j = 2*i; j <= 1000; j+= i)
{
durch[j-2] = 1;
}
}
}
scanf ("%i", &n);
if ((n > 1) && !durch [n-2]) {
printf ("Yes it is a prime!\n");
}
else {
printf ("No it isnt a prime!\n");
}
return 0;
}
请注意,scanf ("%i\n", &n);
将要求输入两个数字。您需要使用scanf ("%i", &n);
答案 1 :(得分:1)
您要在此处丢弃n变量的值:
if (n = primzahlen[anzahl]){
您可能打算比较数字而不是赋值
if (n == primzahlen[anzahl]){