Jump to content
Fórum Script Brasil
  • 0

Duvida somando numeros


GeleiaGels

Question

O programa é o seguinte, ele pega os numeros primos de 2 até n, após pegar, os numeros primos na posição parta (0, 2...) são elevados a -1, os de posição impar são elevados a -1 e depois multiplicados a -1.

Estou tendo dificuldade em somar todos os numeros finais.

ex

n primos: 2,3,5,7,11

ficaria 1/2 -1/3 1/5 -1/7 1/11 ...

eu teria que somar tudo.

#include <stdio.h>
#include <math.h>
int main()
{
int numero = 2;
int num_divisores = 0;
int n, i, soma;
int aux=0;
int b, vector;
float f, a;
scanf("%d",&n);
while(numero <= n)
{
for(i=1; i<=n; i++)
{
if(numero%i == 0)
{
num_divisores++;
}
}

if(num_divisores<=2)
{
if(aux%2)
{

f = pow(numero,-1);
}
else
{
f = pow(-1*numero,-1);
}

aux++;
printf(" %f ",f);
}

}

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Olá, amigo.

Fiz o código para o programa em C++ (não sei programar em C). Deve servir de base para você entender a lógica.

Qualquer dúvida me avise.

#include <iostream>
#include <locale>
#include <vector>

using namespace std;

int n = 0; int Numero_de_Primos = 0;
vector<float> Primos;


void Primos_ate_n(int);
void Construir_Sequencia(vector<float>, int);
void Mostrar_Soma(vector<float>, int);

void Primos_ate_n(int n)
{
    Primos.resize(n);
    Primos[0] = 2;

    int i = 0; int j = 0; int Numero_de_Divisores = 0; int Vector_Index = 1;

    for(i = 3; i <= n; i++)
    {
        Numero_de_Divisores  = 0;
        for(j = 2; j < i; j++)
        {
            if ( i % j == 0)
            {
                Numero_de_Divisores++;
            }

        }
        if (Numero_de_Divisores == 0)
        {
            Primos[Vector_Index] = i;
            Vector_Index++;
            Numero_de_Primos++;
        }
    }
    Construir_Sequencia(Primos,Numero_de_Primos);
}

void Construir_Sequencia(vector<float> Primos, int Numero_de_Primos)
{
    int i = 0;
    for (i = 0; i <= Numero_de_Primos;i++)
    {
        if (i == 0 || i % 2 == 0)
        {
            Primos[i] = 1/(Primos[i]);
        }
        else
        {
            Primos[i] = (1/Primos[i]) * (-1);
        }
    }

    Mostrar_Soma(Primos, Numero_de_Primos);

}

void Mostrar_Soma(vector<float> Primos, int Numero_de_Primos)
{
    int i = 0; float Soma = 0;
    for (i = 0; i <= Numero_de_Primos; i++)
    {
        Soma +=  Primos[i];
    }

    cout << "\n\nO valor da soma é: " << Soma << endl;
}

int main()
{
    setlocale(LC_ALL, "Portuguese");
    cout << "Digite até que valor a sequência deve ir" << endl;
    cin >> n;
    Primos_ate_n(n);
    cin.get();
    return 0;
}

Att.,
Pedro

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...