Конференция "Прочее" » Доказать или опровергнуть, что
 
  • DayGaykin © (19.06.16 20:11) [0]
    всегда существует такое N: 0..7, что для любого числа K истинно выражение (K and (not $F000) + N shl 12) mod 7 = 0.
    Другими словами, любое ли число можно привести к делимости на 7, изменив три бита начиная с 13ого.

    Есть идеи?

    С помощью признака делимости я сходу не смогу.

    Опровергнуть небольшим перебором тоже не вышло:

    procedure TForm1.Button1Click(Sender: TObject);
    var
     K, N: Int64;
     F: Boolean;
    begin
     for K := 0 to $FFFFFFFF do
     begin
         F := False;
         for N := 0 to 7 do
         if (K and (not $F000) + N shl 12) mod 7 = 0 then
         begin
           F := True;
           break;
         end;
       if not F then
       begin
         Memo1.Append(IntToHex(K, 0));
         Application.ProcessMessages;
       end;
     end;
    end;
  • ttUser © (19.06.16 20:19) [1]
    Удалено модератором
  • DayGaykin © (19.06.16 20:45) [2]

    > ttUser ©   (19.06.16 20:19) [1]
    > Во тебя вштырило то :))

    Я по программированию вопросы с трудом на английском задаю, что говорить уже о математике.

    Я даже экспериментально установил значение для N:

    procedure TForm1.Button1Click(Sender: TObject);
    var
     K, N, Id: Int64;
    begin
     for K := 0 to $FFFFFFFF do
     begin
       Id := K and not ($F000);
       N := 7 - Id mod 7;
       if (Id + N shl 12) mod 7 <> 0 then
       begin
         Memo1.Append(IntToHex(K, 0));
         Application.ProcessMessages;
       end;
     end;
    end;  

    Доказательства по прежнему нет.
  • Sha © (19.06.16 20:59) [3]
    DayGaykin ©   (19.06.16 20:11)  

    1 * 4096 mod 7 = 1
    2 * 4096 mod 7 = 2
    4 * 4096 mod 7 = 4

    и каким ни был модуль исходного числа,
    мы всегда сможем найти такую комбинацию бит,
    чтобы в итоге получить нужный модуль
  • Sha © (19.06.16 21:09) [4]
    например, если нужно получить нулевую сумму,
    то можно использовать выражение:
    N:=K mod 7 xor 7;
    при этом будет всегда N>0.
  • SergP © (19.06.16 21:28) [5]

    > DayGaykin ©   (19.06.16 20:11)
    >
    > всегда существует такое N: 0..7, что для любого числа K
    > истинно выражение (K and (not $F000) + N shl 12) mod 7 =
    > 0.
    > Другими словами, любое ли число можно привести к делимости
    > на 7, изменив три бита начиная с 13ого.


    2 в любой степени и 7 - всегда взаимно-простые числа, так что да.
  • SergP © (19.06.16 21:30) [6]

    > всегда существует такое N: 0..7


    более того, всегда существует такое N: 0..6 (или N: 1..7)
  • DayGaykin © (20.06.16 12:59) [7]
    О как! Я плохо понял, но я вам верю.
    Спасибо большое!
 
Конференция "Прочее" » Доказать или опровергнуть, что
Есть новые Нет новых   [134432   +19][b:0][p:0]