网上有很多分解质因数的C++源代码,有人说是这样写的:
#define _CRT_SECU #includeusing namespace std; int main() { long long input; while(1) { cout<<"输入一个数:"; scanf("%d",&input); printf("%d=",input); for(long long i=2;i<=input;i++) { while(input%i == 0) { printf("%d",i); input/=i; if(input % i == 0) { input/=i; if(input != 1) { cout<<"*"; } } } } cout< 明显没有进行实践,完全没考虑周全!运行结果如下:
为了真实性,我重新编辑一下,10天后,谜题终于揭开了……
首先我们加入死循环(也可以不用),声明变量“input、s、a”,输出程序提示,程序如下:
#includeusing namespace std; int main() { long long input,s=2,a=0; while(1) { s=2,a=0; cout<<"输入一个数(分解质因数,范围:2~2147483646):"; } 继续,使用输入输出流,输入到input,判断输入数据是否正确。先输出变量input和"=",再使用for循环;程序如下:
#includeusing namespace std; int main() { long long input,s=2,a=0; while(1) { s=2,a=0; cout<<"输入一个数(分解质因数,范围:2~2147483646):"; scanf("%d",&input); if(input >= 2 ) { printf("%d=",input); for(long long i=2; i<=input; i++) { } } } } (注意格式)我们想:质因数是不是一定被原来的数除尽?那么得有一个while循环判断input%i==0,如9果是将输出i,程序如下:
#includeusing namespace std; int main() { long long input,s=2,a=0; while(1) { s=2,a=0; cout<<"输入一个数(分解质因数,范围:2~2147483646):"; scanf("%d",&input); if(input >= 2 ) { printf("%d=",input); for(long long i=2; i<=input; i++) { while(input%i == 0) { printf("%d",i); } } } } } 我们将i赋值给a(a相当于一个临时变量),判断i是不是质数,先判断a是不是>=2,再判断s是不是a的因数,也就是a%s == 0 ,程序如下:
#includeusing namespace std; int main() { long long input,s=2,a=0; while(1) { s=2,a=0; cout<<"输入一个数(分解质因数,范围:2~2147483646):"; scanf("%d",&input); if(input >= 2 ) { printf("%d=",input); for(long long i=2; i<=input; i++) { while(input%i == 0) { printf("%d",i); a=i; if(a>=2) { while(a%s != 0 && a>s) { s=s+1; } if(s == a) { if(input % i == 0) { } } } } } } } } 确定i是input的质因数,我们除以i,如果还没有除尽(input不等于1),我们就连接一个乘号,循环完之后,我们换行,进行下一次分解,完成的程序如下(成品!!!!!!!):
#includeusing namespace std; int main() { long long input,s=2,a=0; while(1) { s=2,a=0; cout<<"输入一个数(分解质因数,范围:2~2147483646):"; scanf("%d",&input); if(input >= 2) { printf("%d=",input); for(long long i=2; i<=input; i++) { while(input%i == 0) { printf("%d",i); a=i; if(a>=2) { while(a%s != 0 && a>s) { s=s+1; } if(s == a) { if(input % i == 0) { input/=i; if(input != 1) { cout<<"×"; } } } } } } cout< 运行效果:
(关注我,点个赞,学习更多信息技术知识!)



