一道笔试题,要求可视化打印出 一个整数的素数乘积,可视化输入如下图(使用一个3*5的像素打印出数字)
这题考察两个部分:
1.如何求解一个整数的素数乘积;
2.如何格式化输出。
一.求解一个整数n的素数乘积(网上搜的代码,可能有效率更高的算法)
1.4以内的数不需要分解直接输出;
2.先用2试探,如果n能整除2,n=n/2;(去除所有偶数)
3.再用3~sqre(n)之间的奇数来试探,如果n能整除,则整除。(去除奇数)
从小到大的试探,因此得到的结果一定是素数
4.返回结果;
二.格式化输出结果
这个主要是考逻辑思维,我的思路是这样:
1.先存储要打印的数字0~9.
2.用isLast判断是否答应*.
3.用isMove来判断是否需要移动光标.(这里需要知道移动光标的函数,本人对于这个函数是个小白,都是从网上找的)
在*和移位判断时需要判断是否是大于10的数字。
#include<iostream>
#include<string>
#include<boost/lexical_cast.hpp>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
using namespace std;
using namespace boost;
//0-9打印的对应位 0-》空格 1-》— 2-》|
int AllFalg[10][5][3]={ 0,1,0, 2,0,2, 0,0,0, 2,0,2, 0,1,0,//0
0,0,0, 0,0,2, 0,0,0, 0,0,2, 0,0,0,//1
0,1,0, 0,0,2, 0,1,0, 2,0,0, 0,1,0,//2
0,1,0, 0,0,2, 0,1,0, 0,0,2, 0,1,