L1-006連続要因
いくつかの連続する要素の正の整数の数Nが存在してもよいです。5,6,7連続番号が3である630は、例えば、中に3×5×6×7を分解することができます。Nの整数正与え、必要なプログラミング連続最長要素の数が得られ、最小連続因子配列を出力します。
入力フォーマット:
任意の正の整数N(1 <N ^ <2で入力ライン 31)。
出力形式:
まず、最も長い連続的因子の第一出力線の数、次に2行目の1倍2因子出力因子が昇順た...... *係数k因子出力フォーマット最小連続配列において、1カウントされません。
サンプル入力:
630
出力例:
。3
5 * 6 * 7
(中間のスペースなし)
完全なコード:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int flag=0; //标记这个数是否为素数
int len,w;
long long ans=1;
for(len=12; len>0; len--)
{
for(w=2; w<=sqrt(n); w++)
{
ans=1;
for(int i=w; i<=len-1+w; i++)
ans=ans*i;
if(n%ans==0) //不为为素数
{
flag=1;
break;
}
}
if(flag)
{
break;
}
}
if(!flag) //如果是素数,就输出
{
printf("1\n%d\n",n); //因子1不用输出
}
else
{
printf("%d\n",len);
printf("%d",w);
for(int i=w+1; i<=len-1+w; i++)
{
printf("*%d",i);
}
printf("\n");
}
return 0;
}
元の質問へのリンク:
https://pintia.cn/problem-sets/994805046380707840/problems/994805138600869888