c - 数组中素数的总和

标签 c arrays primes

我需要从键盘输入一些随机值并将它们放入数组中。之后我只需要打印素数的平均值。这是我的代码,但它不起作用:

#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;

}

最佳答案

每次您发现一个不是其因数的数字时,您都会将其添加到 sumnrprim 中。例如,当 i == 8 时,当 j35 时,您将添加到它们, 67

只有当一个数字下面的数字都不是因数时,它才是素数。您必须等到 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/

相关文章:

在 C 中连接,就像 Haskell 中的列表

c - 如何修改const变量的值?

java - 如何打印最大到用户输入的整数的素数?

c - 为什么这个素数C程序是错误的?

c - 是否有一种内置信号量结构允许等待多个资源?

c - Make 找不到函数

c - 声明 C 数组

c - 从 C 函数返回数组

javascript - 如何设置点以下的所有值(像数组一样的 TileMap)

javascript - 我最大的质数查找函数有什么问题?