#include
#include
int
main()
{
int
n,i
scanf("%d",&n)
printf("%d=",n)
for(i=2i<=sqrt(n)i++)
{
if(n%i==0)
{
n/=i
printf("%d*",i--)
}
}
printf("%d\n",n)
system("pause")
return
0
}
改进版:#include
#include
#include
int
main()
{
int
n,i
scanf("%d",&n)
printf("%d=",n)
while(n%2==0){
printf("%d*",2)
n/=2
}
for(i=3i<=sqrt(n)i+=2)
{
if(n%i==0)
{
n/=i
printf("%d*",i)
i-=2
}
}
printf("%d\n",n)
system("pause")
return
0
}
因为在所以的质数中只有2是偶数外,其他的质数都是奇数。所以i可以一次+2跳过所有的偶数。不过2要特别处理。待续未完。相信还有更好的算法。
#include <stdio.h>void main(){
int i,j,k,m,n
scanf("[%d,%d]",&m,&n)
for(i=mi<=ni++)
{
k=i
printf("%d=",k)
for(j=2j<=kj++)
while(k!=j)
{
if(k%j==0)
{
printf("%d*",j)
k/=j
}
else break
}
printf("%d\n",j-1)
}
}