# javascript code does not show result

## 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

##### 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?

##### 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 ?

##### 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.

##### 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

##### Share on other sites

You got undefined because the function is not returning anything. The function must use the return statement.

• 1

##### Share on other sites

Just remove calculate(17) from console log(), it will add each value to console log without the need for return, also in Firefox the undefined shows for a Firefox file 'content.js' whixch is unrelated (check far right for filename causing undefined)

##### 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));```

• 1

##### 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

##### Share on other sites

You are prompting for input within the scope of function to x variable, while calling the function with argument  outside the scope of function. It will never be able to know the variable x equals.

• 1

##### Share on other sites

You're also trying to loop over n.  What's n?

• 1

##### Share on other sites

Ha, If you change n to x in function, anything referring to n need to be changed to x as well.

• 1

##### 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.

##### Share on other sites
4 hours ago, mbpowner said:

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

`for(var num=3 ; num<n ; num+=2)`

##### 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

Edited by mbpowner

## Create an account

Register a new account