Happy numbers: Difference between revisions

From Rosetta Code
Content added Content deleted
(Happy number with Javascript example)
 
m (remove wrong Category + minor change for Javascrip example)
Line 1: Line 1:
{{task|Happy Number}}
{{task}}
From Wikipedia, the free encyclopedia:
From Wikipedia, the free encyclopedia:
:A [[wp:Happy number|happy number]] is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers.
:A [[wp:Happy number|happy number]] is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers.


'''Task:''' Find and print the first 8 Happy numbers.
'''Task:''' Find and print the first 8 happy numbers.


=={{header|JavaScript}}==
=={{header|JavaScript}}==
Line 11: Line 11:
var cycle = new Array() ;
var cycle = new Array() ;


while(true) {
while(number != 1 && cycle[number] != true) {
if(number == 1 || cycle[number] == true) break ;
cycle[number] = true ;
cycle[number] = true ;
m = 0 ;
m = 0 ;

Revision as of 15:53, 6 May 2009

Task
Happy numbers
You are encouraged to solve this task according to the task description, using any language you may know.

From Wikipedia, the free encyclopedia:

A happy number is defined by the following process. Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers, while those that do not end in 1 are unhappy numbers.

Task: Find and print the first 8 happy numbers.

JavaScript

<lang javascript> function happy(number) {

   var m, digit ;
   var cycle = new Array() ;
   while(number != 1 && cycle[number] != true) {
       cycle[number] = true ;
       m = 0 ;
       while (number > 0) {
           digit = number % 10 ;
           m += digit * digit ;
           number = (number  - digit) / 10 ;
       }
       number = m ;
   }
   return (number == 1) ;

} ;

var cnt = 8 ; var number = 1 ;

while(cnt-- > 0) {

   while(!happy(number))
       number++ ;
   document.write(number + " ") ;
   number++ ;

} </lang>