Я не могу понять, почему он не печатает первый идеальный квадрат с двумя последними цифрами, которые являются нечетными - PullRequest
1 голос
/ 19 февраля 2012

Профессор попросил нас написать программу, которая печатала бы первый идеальный квадрат, причем последние две цифры были нечетнымиНиже приведена моя попытка решить эту проблему. Я пробовал разные способы кода, чтобы заставить его работать, но безрезультатно.Я искал вокруг и не могу найти никого другого с подобным заданием.Любая помощь по этому вопросу будет принята с благодарностью.

// Project3.cpp : main project file.

#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;

int main() {

    cout << "This program will attempt to find the first perfect square with the last two digits of the square being odd...\n";

    int i = 10;         //1. initialize "i" to 10 since square of 1 to 9 are already known to not have 2 odd last digits.
    int a = i*i;        //2. initialize "a" equal to the square of "i".
    int b = a % 100;    //3. initialize "b" to be the remainder of "a" divided by 100 (modulus operator).
    int c = b / 10;     //4. initialize "c" to be b divided by 10, which gives us the "tens" place.
    int d = a % 10;     //5. initialize "d" to be the remainder of "a" divided by 10, giving us the "ones" place.

    while (((b>10) && (b%2 != 0) && (c%2 != 0) && (d%2 != 0) && ((i*i)%i ==0)) != true){
        if ((b>10) && (b%2 != 0) && (c%2 != 0) && (d%2 != 0) && ((i*i)%i ==0)) {
        cout << "The first perfect square whose last two digits are odd is " << a << ".\n";
        system("PAUSE");
        return 0;
        }   
        else {
        ++i;}
    }    
    system("PAUSE");
    return 0;
}

Спасибо, Дейв

Ответы [ 2 ]

1 голос
/ 19 февраля 2012

Ваш код выполняется только один раз.Вам нужен цикл.

Обратите внимание:

  • Вы запускаете код инициализации.
  • Вы запускаете if / else, который либо отображает выходные данные и выходы, либо увеличиваетi.
  • Затем вы заканчиваете main и ваша программа завершает работу.

Нигде вы не говорите «теперь вернитесь и попробуйте снова с этим новым значением»i ".Вам нужен for или while.

0 голосов
/ 19 февраля 2012

Следующая программа печатает все совершенные квадраты, последние две цифры которых (в базе 10) нечетные:

int main(void){
    return 0;
}

Если последняя цифра n 2 нечетно, тогда n само должно быть нечетным, n = 2*k + 1 для некоторых k.Тогда

n^2 = (2*k + 1)^2 = 4*k*(k+1) + 1

имеет форму 4*m + 1.Но 10 = 2*4 + 2, поэтому, если предпоследняя цифра нечетная, то получается остаток от 2 по модулю 4. Чтобы получить число вида 4*m + 1, последняя цифра, таким образом, должна иметь форму 4*s + 3, что означает, что она должна быть3 или 7. Но нет идеального квадрата, заканчивающегося 3 или 7. Следовательно, не существует идеального квадрата, последние две цифры которого (в основании 10) нечетные .

Возможно, ваш профессор попросилпервый идеальный квадрат, чьи первые две цифры нечетны?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...