重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
求出区间[a,b]中所有整数的质因数分解。
创新互联公司专业为企业提供宣城网站建设、宣城做网站、宣城网站设计、宣城网站制作等企业网站建设、网页设计与制作、宣城企业网站模板建站服务,10余年宣城做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
输入
输入两个整数a,b。
输出
每行输出一个数的分解,形如k=a1*a2*a3...(a1=a2=a3...,k也是从小到大的)(具体可看样例)。
样例输入
3 10
样例输出
3=3
4=2*2
5=5
6=2*3
7=7
8=2*2*2
9=3*3
10=2*5
蓝桥杯
#includestdio.h
#includemath.h
int factor(int n)
{
int i,j=(int)sqrt(n);
if(n%2==0) return 2;
for(i=3;i=j;i++)
if(n%i==0) return i;
return n;
}
int main()
{
int i, j, k, m, n;
scanf("%d%d", m, n);
for(i=m;i=n;i++)
{
j=factor(i);
k=i/j;
printf("%d=%d",i,j);
while(k1)
{
j=factor(k);
k=k/j;
printf("*%d", j);
}
printf("\n");
}
return 0;
}
分解质因数牛逼方法
#include stdio.h
int isPrime(int a)
{
int temp = a;
for(int i = a/2;i=2;i--)
{
if(!(temp%i))
return 0;
}
return 1;
}
int main()
{
int a,i=0,flag = 1,t=2;;
printf("请输入你要分解的数: ");
scanf("%d",a);
printf("%d=",a);
while(a!=1)
{
while(isPrime(t))
{
if(a%t==0)
{
printf("%d",t);
a /= t;
if(a!=1)
printf("*");
}
else
t++;
}
t++;
}
getchar();
return 0;
}
自己去看,没有写注释,其实简单
代码:
#includestdio.h
int main()
{
int a[6555], i, j, t=1;
a[0]=2;
for(i=3;i65540;i+=2)
{
for(j=2;j*j=i;j++)
{
if(i%j==0)
break;
}
if(j*ji)
{ a[t]=i; t++; }
}
int n, n1, n2, x, y, f=0 ;
while(scanf("%d",n)!=EOF)
{
x=0;
for(i=0;a[i]=n;i++)
if(a[i]==n)
{
printf("%d=1*%d\n", n, n);
x=1;
}
if(x==0){
printf("%d=", n);
for(i=0;a[i]n;i++)
{
if(n%a[i]==0)
{
n=n/a[i];
printf("%d*",a[i]);
i--;
}
}
printf("%d\n",n);}
}
return 0;
}
思路就是求出所有素数,然后从素数 2 开始,找可以把n整除的素数,(每次都从素数2开始找,而且找到后要更新n的值)
#
include
"stdio.h"
int
isPrime(int
a)
{
/*判断a是否是
质数
,是质数返回1,不是质数返回0*/
int
i;
for(i=2;i=a-1;i++)
if(a
%
i
==
0)
return
0;
/*不是质数*/
return
1;
/*是质数*/
}
void
PrimeFactor(int
n)
{
/*对参数n分解
质因数
*/
int
i;
if(isPrime(n))
printf("%d
",n);
else
{
for(i=2;i=n-1;i++)
if(n
%
i
==
0)
{
printf("%d
",i);
/*第一个因数一定是质因数*/
if(isPrime(n/i))
{
/*判断第二个因数是否是质数*/
printf("%d
",n/i);
break;
/*找到全部
质因子
*/
}
else
PrimeFactor(n/i);
/*递归地调用PrimeFactor
分解n/i
*/
break;
}
}
}
main()
{
int
n;
printf("Please
input
a
integer
for
getting
Prime
factor\n")
;
scanf("%d",n);
PrimeFactor(n);
/*对n
分解质因数
*/
getche();
}
有这样几个问题:
声明的二维数组是aaa,但代码中应用时又变成了a,会产生a未定义错误。
int aaa[3][100000];数组太大,建议使用全局变量或动态数组;改成int a[3][1000];更好。
a[3][z]=a[1][j];这里和jj=a[3][z]*1;这里数组a都越界了。声明的a第一维是3,即0、1、2,不可能有[3]。
把这些错误改了再说。