C语言 如何在数组中打印条件语句



我试图从数组中识别素数和复合值。但是在条件语句中,它只打印if值而不打印else。

#include <stdio.h>
int main()
{
int a[5], i, j;
for (i = 0; i < 5; i++)
{
scanf("%d", &a[i]);
}
for (i = 0; i < 5; i++)
{
for (j = 2; j <= a[i] / 2; j++)
{
if (a[i] % j == 0)
{
printf("%d is not a prime numbern", a[i]);
break;
}
else
{
printf("%d is a prime numbern", a[i]);
break;
}
}
}
return 0;
}

只有当所有for (j = 2; j <= a[i] / 2; j++)的条件a[i] % j == 0为假时,这个数才是素数。你需要做的是:

#include <stdio.h>
int isNumberPrime(int value){
if(value == 1) return 0;
for (int j = 2; j <= value / 2; j++)
if (value % j == 0)
return 0;
return 1;
}
int main()
{
int a[5];
for (int i = 0; i < 5; i++)
{
scanf("%d", &a[i]);
}
for (int i = 0; i < 5; i++)
{    
if(isNumberPrime(a[i]))
printf("%d is a prime numbern", a[i]);
else
printf("%d is not a prime numbern", a[i]);
}
return 0;
}

最新更新