我需要从键盘输入一些随机值并将它们放入数组中。之后我只需要打印素数的平均值。这是我的代码,但它不起作用:
#include<stdio.h>
#include<conio.h>
int main()
{
int v[50], n, i, nrprim = 0, sum = 0, j;
float medie = 0;
printf("dati numarul de elemente al vectorului:\t");
scanf("%d", &n);
for ( i = 0; i < n; i++)
{
printf("dati elmentele vectorului:\t");
scanf("%d", &v[i]);
}
for(i=0; i<n; i++)
for(j=2; j<v[i]; j++)
{
if(v[i]%j!=0)
{
sum = sum + v[i];
nrprim++;
}
}
medie =( sum/nrprim);
printf("%f", medie);
_getch();
return 0;
}
最佳答案
每次您发现一个不是其因数的数字时,您都会将其添加到 sum
和 nrprim
中。例如,当 i == 8
时,当 j
为 3
、5
时,您将添加到它们, 6
或 7
。
只有当一个数字下面的数字都不是因数时,它才是素数。您必须等到 j
循环结束才能知道这一点。
如果您想要平均值中包含分数,则需要在除法之前将其中一个值转换为float
。否则你会得到整数除法。
#include<stdio.h>
#include<conio.h>
int main()
{
int v[50], n, i, nrprim = 0, sum = 0, j;
float medie = 0;
printf("dati numarul de elemente al vectorului:\t");
scanf("%d", &n);
for ( i = 0; i < n; i++)
{
printf("dati elmentele vectorului:\t");
scanf("%d", &v[i]);
}
for(i=0; i<n; i++)
int is_prime = 1;
for(j=2; j<v[i]; j++)
{
if(v[i]%j == 0)
{
is_prime = 0;
break;
}
}
if (is_prime) {
sum = sum + v[i];
nrprim++;
}
medie = float(sum)/nrprim;
printf("%f", medie);
_getch();
return 0;
}
关于c - 数组中素数的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53883958/