?? intfactorization.cpp
字號:
#include <stdio.h>
#include <iostream.h>
#include <cmath>
#include <fstream>
int Factorizate(int n,int *a)
{
int intMaxProduct=1;
int intOverplus=n;
int i=2;//加數數組的下標
if (n==1) return 1;//當n為1~4時,最大乘積就是他們自己
if (n==2) return 2;
if (n==3) return 3;
if (n==4) return 4;
while(intOverplus>=i)//找出最大加數下標
{
intOverplus-=i;
i++;
}
int m=i-1;//保存最大加數下標
for (int j=0;j<=m;j++) a[j]=j;//初始化加數數組
for (i-=1;i>=2;i--)//微調加數數組,使其和為n
{
if(intOverplus<=0) break;
a[i]++;
intOverplus--;
}
if(intOverplus>0) a[m]++;
for (j=2;j<=m;j++)//求出最大乘積,并輸出加數數組
{
intMaxProduct*=a[j];
cout<<a[j]<<"\t";
//fprintf(outFile, "%d\t", a[j]);
}
cout<<endl;
//fprintf(outFile, "\n");
return intMaxProduct;
}
void main()
{
int n;
//int n=10;
FILE *inFile; //從txt獲得正整數n
inFile= fopen("input.txt","r");
fscanf(inFile,"%d",&n);
fclose(inFile);
int intMaxProduct;
int m=(int)(sqrt(2*n)+1);//數組長度
int *a=new int[m+1];//加數數組
intMaxProduct=Factorizate(n,a);
cout<<"最大乘積為"<<intMaxProduct<<endl;
FILE *outFile; //輸出最大乘積
outFile = fopen("output.txt", "w");
fprintf(outFile, "%d\n", intMaxProduct);
fclose(outFile);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -