Pereiti prie turinio

Daliklių ieškojimas


Rekomenduojami pranešimai

Sveiki, norėčiau paklausti koks būtų paprasčiausias būdas rasti kiek skaičius turi daliklių ? Tarkim skaičius x=4, reiškias jis turi 3 daliklius : 1,2,4.

Sugalvoti kaip spręsti sugalvoju, bet neesu perpratęs c++ užrašymo, tada labai pagelbėtumėt jei kas nors paaiškintumėt :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Užkurk for ciklą, susigalvojęs ribą iki kiek ieškos (šiuo atvėju iki 1000000) ir tam cikle tikrink ar padalinus turės liekaną ar ne (sk tavo skaičius)

for(int i = 1; i < 1000000; i++){

 

if(sk % i == 0){

 

cout << i;

 

}

 

}

Redagavo ugniues
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Užkurk for ciklą, susigalvojęs ribą iki kiek ieškos (šiuo atvėju iki 1000000) ir tam cikle tikrink ar padalinus turės liekaną ar ne (sk tavo skaičius)

for(int i = 1; i < 1000000; i++){

 

if(sk % i == 0){

 

cout << i;

 

}

 

}

 

Jo esmę pagaunu, bet man kažkodėl nesigavo įsivedus šitą. Įvedu 3 išmeta 13.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Algoritmas galėtų būti toks:

 

Tarkime skaičius yra x. Ieškai jo daliklių skaičiaus

 

 

 

apibrėži j=0 (skaitliukas)

 

Suki ciklą nuo 0 iki x. {

 

i=i+1

Jei x mod i = 0, tai j=j+1 }

 

Taigi, tavo x dalins iš visų skaičių nuo 1 iki x. Jei dalinsis be liekanos - susumuos tuos atvejus ir gausi daliklių skaičių.

 

Telieka tik susiprogramuoti.

Nuoroda į pranešimą
Dalintis kituose puslapiuose
#include <cstdlib>
#include <Cmath>
#include <iostream>

using namespace std;

int main()
{
   int skaicius = 1;
   int DalKiekis = 0;
   cin >> skaicius;
   for (int i=1; i<=sqrt(skaicius); i+=1)
       if (skaicius % i == 0)
          if (sqrt(skaicius) != i)
             DalKiekis += 2; else DalKiekis += 1;
   cout << DalKiekis << endl;
   system("PAUSE");
   return 0;
}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

#include <cstdlib>
#include <Cmath>
#include <iostream>

using namespace std;

int main()
{
   int skaicius = 1;
   int DalKiekis = 0;
   cin >> skaicius;
   for (int i=1; i<=sqrt(skaicius); i+=1)
       if (skaicius % i == 0)
          if (sqrt(skaicius) != i)
             DalKiekis += 2; else DalKiekis += 1;
   cout << DalKiekis << endl;
   system("PAUSE");
   return 0;
}

 

 

dėl ko čia šaknies sąlyga? niekaip nesuprantu

 

ai, taupai kompo resursus teigdamas, kad daliklis negali būti didesnis už šaknį :D aišku

Redagavo kaciuss
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Jei skaičius dalinasi iš skaičiaus, reiškias jis dalinasi iš dviejų skaičių, kurie bus didesni ir mažesni arba lygūs skaičiaus šakniai pvz.: 36 = 1*36 = 2*18 = 3*12 = 4*9 = 6*6, skaičiaus 36 šaknis yra 6, tai tikrinam visus skaičius iki 6 (imtinai) ar dalinasi, jei dalinasi iš karto žinom, kad dalinsis iš 2 skaičių, nebent tai būtų skaičiaus šaknis, tada reikia pridėti tik vieną skaičių.

Nežinau ar aiškiai išsireiškiau... :D

Redagavo audrius^
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

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

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...