质因数分解并图形化打印

来源:互联网 发布:无主之地2 mac汉化 编辑:程序博客网 时间:2024/05/02 01:15

昨天做了一道编程题,感觉很有意思,因此把题意和代码放上,为各位同学提供方便


题意是:

     将一个小于1000000的数质因数分解,并且按照从小到大的顺序 利用 - 和 | 和 * 打印出来

例子:

输入: 

1

99999

输出:


以下是源代码(如有错误,欢迎指正):

#include"stdio.h"#include"stdlib.h"void pri_number(int num,int line){if(line==1){  if(num==1 || num==4)printf("     ");  else printf("  -  ");}if(line==2){if(num==0 || num==4 || num==8 || num==9){     printf(" | | ");}else if(num==1 || num==2 || num==3 || num==7){     printf("   | ");}    else printf(" |   ");}if(line==3){  if(num==0 || num==1 || num==7)printf("     ");  else printf("  -  ");}if(line==4){if(num==0 || num==6 || num==8){     printf(" | | ");}else if(num==1 || num==3 || num==4 || num==5 || num==7 || num==9){     printf("   | ");}    else printf(" |   ");}if(line==5){  if(num==1 || num==4 ||num==7)printf("     ");  else printf("  -  ");}}void prin(int* data,int num){int temp;int* out = (int*)malloc(sizeof(int)*10);int out_num=0;for(int i=1;i<=5;i++){for(int j=0;j<num;j++){out_num=0;temp = data[j];//分解一个数,比如 345分解成 3  4  5for(int k=0;k<10 && temp!=0;k++){out[out_num] = temp%10;out_num++;temp = temp/10;}for(int k=out_num-1;k>=0;k--){pri_number(out[k],i);}if(i==3 && j!=num-1) printf("  *  "); //第三行打印*号,并且不是最后一个数else printf("     "); //其他的行打印空格}printf("\n");}}void main(){int in;int N;int* out = (int*)malloc(sizeof(int)*20);int out_num=0;scanf("%d",&N);for(int i=0;i<N;i++){scanf("%d",&in);out_num=0;for(int i=2;i <= in;){    if( in%i == 0 ){out[out_num] = i;out_num++;in = in/i;}else i++;}prin(out,out_num);}system("pause");}



0 0