MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: AGAIN Nested while loop!!!

  • To: mathgroup at smc.vnet.net
  • Subject: [mg71636] Re: AGAIN Nested while loop!!!
  • From: Bill Rowe <readnewsciv at sbcglobal.net>
  • Date: Sat, 25 Nov 2006 05:37:17 -0500 (EST)

On 11/24/06 at 1:17 AM, csarami at gmail.com (mumat) wrote:

>I have a list of numbers

>lst = Table[Random[Integer, {i, 50}], {i, 6}]

>I want to write a program that if There are two numbers x, y in A
>where

>Mod[x^2+y^2, 5]==0  reuturn False and the pair {x,y}, otherwise
>True!

>For[i = 0, i < 6, For[j = i, j < 6,
>If[Mod[lst[[i]]^2 + lst[[j]]^2, 3] == 0,
>Return[False,{i,j}]];Break[], j++], i++]

Mathematica indexing starts at 1 not 0.

>While loop and nested while loops accept only one counter "i".

>i=1;j=2;

>While[i<6 && While[j<6 &&
>Mod[lst[[i]]^2+lst[[j]]^2,7]=!=0,j++];i++];{i,j}

>{2,6}

My approach to solving this issue would be to avoid using either 
For or While.

The desired list of numbers can be generated using Subsets as follows

In[13]:=
lst=DeleteCases[Subsets[Table[Random[Integer,{1,50}],{6}],2],{}|{_}]

Out[13]=
{{32, 6}, {32, 10}, {32, 29}, {32, 17}, {32, 31},
   {6, 10}, {6, 29}, {6, 17}, {6, 31}, {10, 29}, {10, 17},
   {10, 31}, {29, 17}, {29, 31}, {17, 31}}

and the desired output can be obtained by:

In[14]:=
If[Mod[Plus @@ (#^2), 5] == 0, {False, #}, True]&/@ lst

Out[14]=
{{False, {32, 6}}, True, {False, {32, 29}}, True,
   {False, {32, 31}}, True, True, {False, {6, 17}}, True,
   True, True, True, {False, {29, 17}}, True,
   {False, {17, 31}}}
--
To reply via email subtract one hundred and four


  • Prev by Date: Re: Non-linear Rgression
  • Next by Date: RE: pattern matching: rules that stop other rules?
  • Previous by thread: Re: AGAIN Nested while loop!!!
  • Next by thread: Re: AGAIN Nested while loop!!!