int answer3() {
    long number = 600851475143L;
    long backup_number = number;

    int factor = 1;
    while (number > 1) {
        increment_factor(4);

        while (number % factor == 0)
            number = number / factor;

        if (number <= 1) break;
        increment_factor(2);


        while (number % factor == 0)
            number = number / factor;
    }
    return factor;
}
Example #2
0
//-------------------------------------------------------------------
// Process button presses when in GUI_MODE_MENU mode
int gui_menu_kbd_process() {

    switch (kbd_get_autoclicked_key() | get_jogdial_direction())
    {
        case KEY_ERASE:
        case KEY_SHOOT_HALF:
            if (!increment_factor())
                int_incr = 1;
            gui_menu_redraw=1;
            break;
        case JOGDIAL_LEFT:
        case KEY_UP:
            gui_menu_updown(-1);
            break;
        case JOGDIAL_RIGHT:
        case KEY_DOWN: 
            gui_menu_updown(1);
            break;
        case FRONTDIAL_LEFT:
        case KEY_LEFT:
            if (gui_menu_curr_item >= 0) {
                switch (curr_menu->menu[gui_menu_curr_item].type & MENUITEM_MASK) {
                    case MENUITEM_INT:
                        update_int_value(&curr_menu->menu[gui_menu_curr_item],-1);
                        break;
                    case MENUITEM_BOOL:
                        update_bool_value(&curr_menu->menu[gui_menu_curr_item]);
                        break;
                    case MENUITEM_ENUM:
                    case MENUITEM_ENUM2:
                        update_enum_value(&curr_menu->menu[gui_menu_curr_item],-1);
                        break;
                    case MENUITEM_UP:
                        gui_menu_back();
                        break;
                    case MENUITEM_STATE_VAL_PAIR:
                        {
                            CMenuItem *c = (CMenuItem*)(curr_menu->menu[gui_menu_curr_item].value);
                            if (*(c[1].value) == 0)
                                update_bool_value(&c[1]);
                            switch (c[0].type & MENUITEM_MASK)
                            {
                                case MENUITEM_INT:
                                    update_int_value(&c[0],-1);
                                    break;
                                case MENUITEM_ENUM:
                                case MENUITEM_ENUM2:
                                    update_enum_value(&c[0],-1);
                                    break;
                            }
                        }
                        break;
                }
            } else {
                gui_menu_back();
            }
            break;
        case FRONTDIAL_RIGHT:
        case KEY_RIGHT:
            if (gui_menu_curr_item >= 0) {
                switch (curr_menu->menu[gui_menu_curr_item].type & MENUITEM_MASK){
                    case MENUITEM_INT:
                        update_int_value(&curr_menu->menu[gui_menu_curr_item],1);
                        break;
                    case MENUITEM_BOOL:
                        update_bool_value(&curr_menu->menu[gui_menu_curr_item]);
                        break;
                    case MENUITEM_ENUM:
                    case MENUITEM_ENUM2:
                        update_enum_value(&curr_menu->menu[gui_menu_curr_item],1);
                        break;
                    case MENUITEM_SUBMENU_PROC:
                        select_proc();
                        break;
                    case MENUITEM_SUBMENU:
                        select_sub_menu();
                        break;
                    case MENUITEM_STATE_VAL_PAIR:
                        {
                            CMenuItem *c = (CMenuItem*)(curr_menu->menu[gui_menu_curr_item].value);
                            if (*(c[1].value) == 0)
                                update_bool_value(&c[1]);
                            switch (c[0].type & MENUITEM_MASK)
                            {
                                case MENUITEM_INT:
                                    update_int_value(&c[0],1);
                                    break;
                                case MENUITEM_ENUM:
                                case MENUITEM_ENUM2:
                                    update_enum_value(&c[0],1);
                                    break;
                            }
                        }
                        break;
                }
            }
            break;
        case KEY_SET:
            if (gui_menu_curr_item >= 0) {
                switch (curr_menu->menu[gui_menu_curr_item].type & MENUITEM_MASK){
                    case MENUITEM_INT:
                        if (camera_info.state.is_shutter_half_press)
                        {
                            *(curr_menu->menu[gui_menu_curr_item].value) = 0;
                            gui_menu_redraw=1;
                        }
                        break;
                    case MENUITEM_BOOL:
                        update_bool_value(&curr_menu->menu[gui_menu_curr_item]);
                        break;
                    case MENUITEM_SUBMENU_PROC:
                    case MENUITEM_PROC:
                        select_proc();
                        break;
                    case MENUITEM_SUBMENU:
                        select_sub_menu();
                        break;
                    case MENUITEM_UP:
                        gui_menu_back();
                        break;
                    case MENUITEM_COLOR_FG:
                    case MENUITEM_COLOR_BG:
                        item_color=((unsigned char*)(curr_menu->menu[gui_menu_curr_item].value)) + (((curr_menu->menu[gui_menu_curr_item].type & MENUITEM_MASK)==MENUITEM_COLOR_BG)?1:0);
                        libpalette->show_palette(PALETTE_MODE_SELECT, FG_COLOR(*item_color), gui_menu_color_selected);
                        gui_menu_redraw=2;
                        break;
                    case MENUITEM_ENUM:
                    case MENUITEM_ENUM2:
                        update_enum_value(&curr_menu->menu[gui_menu_curr_item],1);
                        gui_menu_redraw=1;
                        break;
                    case MENUITEM_STATE_VAL_PAIR:
                        {
                            CMenuItem *c = (CMenuItem*)(curr_menu->menu[gui_menu_curr_item].value);
                            if ((c[1].type & MENUITEM_MASK) == MENUITEM_ENUM)
                                update_enum_value(&c[1],1);
                            else
                                update_bool_value(&c[1]);
                        }
                        break;
                }
            }
            break;

        case KEY_ZOOM_IN:
            if (decrement_factor())
                gui_menu_redraw = 1;
            break;

        case KEY_ZOOM_OUT:
            if (increment_factor())
                gui_menu_redraw = 1;
            break;

        case KEY_DISPLAY:
            if (camera_info.cam_has_zoom_lever)
            {
                gui_menu_back();
            }
            else
            {
                // For cams without zoom lever, DISP adjusts increment factor
                if (!increment_factor())
                    int_incr = 1;
                gui_menu_redraw=1;
            }
            break;
    }

    return 0;
}