Note that there are some explanatory texts on larger screens.

plurals
  1. POProject Euler 4
    primarykey
    data
    text
    <p>I have written the following code and put a lot of time into it. But there is just something intrinsically wrong with it, if someone could kindly direct me in making it more efficient, I would be infinitely grateful.</p> <p>It currently produces NO output.</p> <pre><code>% A palindromic number reads the same both ways. % The largest palindrome made from the product of % two 2-digit numbers is 9009 = 91 99. % Find the largest palindrome made from the % product of two 3-digit numbers. % 1) Find palindromes below 999x999 (product of two 3 digit #s) % 2) For each palindrome found, find the greatest Factors. % 3) The first palindrome to have two 3 digit factors is the % Solution %============== Variables =============================== % % number = a product of 2 3 digit numbers, less than 100x100. The % Palindrome we are looking for. % % n1, n2 = integers; possible factors of number. % % F1, F2 = two largest of factors of number. multiplied % together they == number. % % finish = boolean variable, decides when the program terminates % ================= Find Palindrome ================================ % The maximum product of two 3 digit numbers number = 999*999; finish = false; count = 0; while ( finish == false) % % Check to see if number is a Palindrome by comparing % String versions of the number % % NOTE: comparing num2string vectors compares each element % individually. ie, if both strings are identical, the output will be % a vector of ONES whose size is equal to that of the two num2string % vectors. % if ( mean(num2str( number ) == fliplr( num2str ( number ) ) ) == 1 ) % fprintf(1, 'You have a palindrome %d', number); % Now find the greatest two factors of the discovered number ========== n1 = 100; n2 = 100; % temporary value to enter loop % While n2 has 3 digits in front of the decimal, continue % Searching for n1 and n2. In this loop, n1 increases by one % each iteration, and so n2 decreases by some amount. When n2 % is no longer within the 3 digit range, we stop searching while( 1 + floor( log10( n2 ) ) == 3 ) n2 = number/n1; % If n2 is EXACTLY a 3 digit integer, % n1 and n2 are 3 digit factors of Palindrome 'number' if( 1 + log10( n2 ) == 3 ) finish = true; Fact1 = n1; Fact2 = n2; else % increment n1 so as to check for all possible % 3 digit factors ( n1 = [100,999] ) n1 = n1 + 1; end end % if number = n1*n2 is not a palindrome, we must decrease one of the % Factors of number and restart the search else count = count + 1; number = 999 * (999 - count); end end fprintf(1, 'The largest factors of the palindrome %i \n', number ) fprintf(1, ' are %i and %i', Fact1, Fact2 ) </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload