Forum » Programiranje » Java problemček
Java problemček
pajac ::
LP!
enostaven programček za praštevila.Imam dva problemčka:
1. prevajalnik mi javi da ne najde spremenljivke STEV, ki je definirana v metodi MAIN().
2. kako dopovedat programu naj stevilo deli smo s sabo?? (probal sem z THIS.STEV)
/*
* Prastevila
*/
public class PraStevila {
// pogojna metoda
boolean Pogoji() {
// 1. pogoj
if (stev % 1 == 0) {
return true;
}
if (stev % 2 == 0) {
return false;
}
if (stev % this.stev == 0) {
return true;
}
if (stev < = 2) {
return stev == 2;
}
return true; // vrni resnične
}
public static void main (String[] argv) {
// spremenljivke
int ZG_meja = 40;
int SP_meja = 3;
int stev;
for (stev = SP_meja; stev < = ZG_meja; stev++)
System.out.println("Prastevila med "+ SP_meja +" in "+ ZG_meja +"so: "+ stev);
}
}
Za odgovore bom zelo hvaležen.
enostaven programček za praštevila.Imam dva problemčka:
1. prevajalnik mi javi da ne najde spremenljivke STEV, ki je definirana v metodi MAIN().
2. kako dopovedat programu naj stevilo deli smo s sabo?? (probal sem z THIS.STEV)
/*
* Prastevila
*/
public class PraStevila {
// pogojna metoda
boolean Pogoji() {
// 1. pogoj
if (stev % 1 == 0) {
return true;
}
if (stev % 2 == 0) {
return false;
}
if (stev % this.stev == 0) {
return true;
}
if (stev < = 2) {
return stev == 2;
}
return true; // vrni resnične
}
public static void main (String[] argv) {
// spremenljivke
int ZG_meja = 40;
int SP_meja = 3;
int stev;
for (stev = SP_meja; stev < = ZG_meja; stev++)
System.out.println("Prastevila med "+ SP_meja +" in "+ ZG_meja +"so: "+ stev);
}
}
Za odgovore bom zelo hvaležen.
Seadoo ::
Stev je definirana v Main metodi, vendar jo uporabljaš tudi v funkciji Pogoji(). Ne vem kaj si hotu s to funkcijo sploh naredit.
Če pogledaš samo tvojo main funkcijo - izpiše ti vsa števila med spodnjo in zgornjo mejo, nikakor pa ne vseh praštevil. V for zanki moreš dodat en if stavek, v katerem preveriš. ali je število res praštevilo in če je, ga izpišeš.
Če pogledaš samo tvojo main funkcijo - izpiše ti vsa števila med spodnjo in zgornjo mejo, nikakor pa ne vseh praštevil. V for zanki moreš dodat en if stavek, v katerem preveriš. ali je število res praštevilo in če je, ga izpišeš.
LeQuack ::
Se en drugacen pristop:
public class Prastevila
{
public static void main(String[] args)
{
byte spMeja=10, zgMeja=30, s=0, stevilo, delitelj; //inicializacija spremenljivk
System.out.print("Prastevila med "+spMeja+" in "+zgMeja+" : ");
for (stevilo=spMeja; stevilo< =zgMeja; ++stevilo) //zanka za stevila med 10 in 30
{
byte vsota=0; //inicializacija zacasne vsote za izracun prastevila
for (delitelj=2; delitelj< =stevilo; ++delitelj) //zanka za delitelja
{
if (stevilo%delitelj==0) //pri ostanku 0
vsota+=delitelj; //dodaj k vsoti delitelja
if (vsota==stevilo) //ce je vsota enaka stevilu, je to prastevilo, ker je deljivo samo s samim sabo
{
System.out.print(stevilo+" ");
s+=stevilo;
}
}
}
System.out.println();
System.out.println("Vsota praštevil : "+s);
}
}
public class Prastevila
{
public static void main(String[] args)
{
byte spMeja=10, zgMeja=30, s=0, stevilo, delitelj; //inicializacija spremenljivk
System.out.print("Prastevila med "+spMeja+" in "+zgMeja+" : ");
for (stevilo=spMeja; stevilo< =zgMeja; ++stevilo) //zanka za stevila med 10 in 30
{
byte vsota=0; //inicializacija zacasne vsote za izracun prastevila
for (delitelj=2; delitelj< =stevilo; ++delitelj) //zanka za delitelja
{
if (stevilo%delitelj==0) //pri ostanku 0
vsota+=delitelj; //dodaj k vsoti delitelja
if (vsota==stevilo) //ce je vsota enaka stevilu, je to prastevilo, ker je deljivo samo s samim sabo
{
System.out.print(stevilo+" ");
s+=stevilo;
}
}
}
System.out.println();
System.out.println("Vsota praštevil : "+s);
}
}
Zgodovina sprememb…
- spremenil: LeQuack ()
Seadoo ::
Še ena hitra optimizacija: v zgornji for zanki ni potrebno pregeldat vseh števil do 'števila', ampak le do njegovega korena. Ne vem točno kako je to v Javi, recimo stevilo.root.
Torej namesto
for (delitelj=2; delitelj< =stevilo; ++delitelj)
je dovolj
for (delitelj=2; delitelj< =stevilo.root; ++delitelj)
Torej namesto
for (delitelj=2; delitelj< =stevilo; ++delitelj)
je dovolj
for (delitelj=2; delitelj< =stevilo.root; ++delitelj)
pajac ::
Vidva sta vsekakor legende (še žive seveda).
To rešitev (da je število deljivo samo s sabo) sem iskal kar nekaj časa.
Glede na to da sem začetnik, se še kaj oglasim, upam da vidva tudi.
TNX!
To rešitev (da je število deljivo samo s sabo) sem iskal kar nekaj časa.
Glede na to da sem začetnik, se še kaj oglasim, upam da vidva tudi.
TNX!
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | python-rabim pomočOddelek: Programiranje | 2788 (1018) | rnla1973 |
» | Naloga iz Putka - UPMOddelek: Programiranje | 2223 (1559) | NejcSSD |
» | Python - problemOddelek: Programiranje | 2796 (2526) | slevin |
» | [Java] programiranje "praštevila"Oddelek: Programiranje | 2559 (2437) | blaz_ |
» | Svetujte mi en spodoben editor za programiranje!Oddelek: Programiranje | 1797 (1437) | mainman |