Największy nieparzysty dzielnik

0

Witam, mam problem z zadaniem - mam napisać program c++ który podaje największy nieparzyty dzielnik N (dodatniego). Jestem kompletnym laikiem stąd ten problem...

Program ten po wpisaniu np. 22 wypisuje sześciocyfrowe numery. Pomógłby mi ktoś znaleźć błąd?

#include <iostream>
using namespace std;

main()
{
int N,a,c,x;

cin>>N;
a=2*x+1;
 if (N%a==0 && c>a && N%c!=0);
    cout<<a;

    return 0;

}

dodanie znacznika <code class="cpp"> - fp

0

Problem polega w tym że nawet z podstaw matematyki 3/4 klasa podstawówki jesteś "kompletnym laikiem".

#include <iostream>
using namespace std;
 
int main()
  {
   int N;
   cin>>N;
   while(!(N&1)) N>>=1; // ewentualnie while(N%2==0) N/=2; - dopóki N jest parzysta dziel N przez 2
   cout<<N;
   return 0;
  }
0

Nie trafiłeś za bardzo z matematyką, ale nie widzę sensu w jakimkolwiek sporze.

Dziękuję za kod, ale problem miałam najwyraźniej z zapisem tego, co w kodzie. Miałam na myśli a - nieparzysta i jeżeli n (mod a)=0 i nie istnieje liczba c>a która dzieli n, to wypisz a (jako największy dzielnik. W samym rozumowaniu poprawiłabym tylko to, że c też musi być nieparzyste. Nie umiałam tego zapisać po prostu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1