标签:
题目内容:
每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数。比如,6可以被分解为2x3,而24可以被分解为2x2x2x3。
现在,你的程序要读入一个[2,100000]范围内的整数,然后输出它的质因数分解式;当读到的就是素数时,输出它本身。
输入格式:
一个整数,范围在[2,100000]内。
输出格式:
形如: n=axbxcxd 或 n=n
所有的符号之间都没有空格,x是小写字母x。
输入样例: 18
输出样例: 18=2x3x3
源代码:
#include <stdio.h> int isPrime(long int a);//判断输入的数是否为素数 int main() { long int n,i,ret; i=2; ret=1;//判断因子输出状态的位 scanf("%d",&n); if(isPrime(n)==1) { printf("%d=%d",n,n); } else{ printf("%d=",n); while(n>=i) { while(n%i==0) { if(ret) { printf("%d",i); ret=0; } else { printf("x%d",i); } n/=i; } i++; } } return 0; } int isPrime(long int a) { int isPrime=1;//是素数 long int i; for(i=2;i<a;i++) { if(a%i==0){ isPrime=0; break; } } return isPrime; }
重点:判断输入数的因子是表示为*%d还是%d*,前者要考虑第一个因子输出的条件,后者是考虑最后一个因子输出的条件
标签:
原文地址:http://www.cnblogs.com/meilirensheng/p/5386414.html