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