Jump to content

javascript code does not show result


hisoka

Recommended Posts

I have this javascript code and when I run it it does not print the result :
 

function isprime(n)
{

  if (n<2)
  {
   return false;
  }
 
  var q = Math.floor(Math.sqrt( n));
   
  for( i = 2 ; i<= q ; i++)
  {
    var result = n%i;
    
    if(result==0)
       
      
     {
      
     return false;
     
      }
    
   else
     
    {
     document.write(result);
    }
    
  }
 
}


var prime = isprime(100);

I do not know why ? any help on what is the problem is and how to solve it

Link to comment
Share on other sites

That function isn't written very well, it doesn't even always return a value.  If you actually give it a prime number like 17 it doesn't return any value at all.  If a function is going to return a value, it should always return a value.  That function will never return true, how are you supposed to know if the number is prime or not?

Link to comment
Share on other sites

That is why I put the code here and asked for help because I do not know how  that function will return a value , how it will print it in the computer screen so that I can see it . What to do so that the function is well written and how to do it !!

Quote

how are you supposed to know if the number is prime or not?

Generally I know that an integer is a prime if it is not divisible by any prime  less or equal to its square root hence we have in that code  the

  var q = Math.floor(Math.sqrt( n));

it gives the square root of a number combined with math.floor and the for loop it takes n % i which is n % all numbers that are less or equal to the square root of n and dismisses or ignore all the numbers that are divisible by n as they are not prime .

 

Moreover the role of the function is not to look if n is a prime or not otherwise to give all the primes between 2 and n

My problem is I cannot make it print the values . You wrote that is it not well written , it does not return a value ....... I know all that . So what do you suggest to make it well writeen , return a value and print it in the screen . What is the substitution ? any suggest from you on what to do ?

Link to comment
Share on other sites

First, don't use document.write.  That might mess up testing.  Use console.log to print anything you want to the console, including debugging information.  If you want to test what the function does you can print that also, e.g.:

console.log("isprime(12):");
	console.log(isprime(12);
	console.log("isprime(17):");
	console.log(isprime(17);

Make sure that every path through the function will result in a return statement.  There is no "return true" in that function, that should be an indication that it's not doing what it's supposed to do.

Link to comment
Share on other sites

I changed that code with another code :
 

function calculate(n)
{
for(i=0 ; i<=n ; i++)
{
 var isprime = false;
 for(j=2 ; j<=n ; j++)
 {
 if(i%j===0 && i!==j)
   {
    isprime = true;
   }
 }
 if(isprime===false)
   {
     console.log(i+"\n");
     
   }
 
}

}

console.log(calculate(17));

then it gives me :

1
 
2
 
3
 
5
 
7
 
11
 
13
 
17

undefined

I do not know why get undefined and how to correct the code so that I do not get undefined

Link to comment
Share on other sites

IF you still want to use console.() to call function with argument, store each value in variable and return THAT final result to console.log

            function calculate(n)
            {
                var results = "";
                for (i = 0; i <= n; i++)
                {
                    var isprime = false;
                    for (j = 2; j <= n; j++)
                    {
                        if (i % j === 0 && i !== j)
                        {
                            isprime = true;
                        }
                    }
                    if (isprime === false)
                    {
                        results += i + "\n";

                    }

                }
                return results;
            }

            console.log(calculate(25));

 

  • Thanks 1
Link to comment
Share on other sites

Now I am trying to take a number as input in box and once I press ok all the primes that are less than it are generated I did like this :
 

function calculate(x)
{
var x = prompt("enter a number");

var results = "" ;
var y=parseInt(x);
  
 

for(i=0 ; i<n ; i++)
{
 var isprime = false;
 for(j=2 ; j<n ; j++)
 {
 if(i%j===0 && i!==j)
   {
    isprime = true;
   }
 }
 if(isprime===false)
   {
 
     results += i + "\n";
   }

}
return results; 
}

console.log(calculate(x));

but it gives no result . I know that something I added in the code is wrong but I do not know how to correct it .

Edited by hisoka
Link to comment
Share on other sites

Values arent being returned unless n is less than 2. Also, I'm not sure I think this is the best way to approach it:
 

Quote

 

function isPrime(int n){

        if(n<2){

               return false;

           }   else if(n==2){

                   return true;

         }  

   else if(n%2==0){

                     return false;

                 }else{

                     for(int num=3; num+=2; num<n){

                           if(n%num==0){

                                  return true;

                     }

             }

              return false;

     }

}


 

This is because is a number is divisible by any even number, it's definitely divisible by 2. Just a suggestion on improving the efficiency.

Link to comment
Share on other sites

Yh whoops, that's what I meant LOL. My bad. Just bcuz I code in java normally so it's easy to get carried away with the language and forget the syntax for the specific language.  And that for loop was written in a bit of a rush. My apologies

 

also just realized. There should be no int in the parameter of the function :P

Edited by mbpowner
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...