关于此题,本人的思路是先将2~n(即输入的数字)存到一个数组中,然后依次循环,一直调用函数;当然,进入函数之后如果遇到的数字是素数的话就直接输出,如果不是的话就依次在前面已经保存的数组里面找相应的质因数;一直循环到n为止。
以下是本人的代码:
#include<stdio.h>
#define M 10000
int B;
int a[M];
int judge(int x){
int flage = 0 ;
for(int i = 2 ; i < x ; i ++){
if(x % i == 0)
flage++;
}
if(flage==0)
return 0;
else
return 1;
}
void f2(int n){
int i , j = 1 ;
for(i = 2 ; i < n ; i ++ ){
int n = judge(i);
if(n == 0)
a[j++] = i;
}
}
void f(int x ){
int i = 1 ;
int x1 = x;
int n = judge(x1);
if(n == 0)
printf("%d=%d",x1,x1);
else{
printf("%d=",x1);
for(i = 1 ; i <= x1 ; i ++){
for(;x1 % a[i] == 0;){
x1 /= a[i];
printf("%d*",a[i]);
}
}
printf("\b ");
}
printf("\n");
}
int main(){
int a,b;
scanf("%d %d",&a,&b);
if(a > b){
int temp = a ;
a = b ;
b = temp;
}
B = b;
f2(b);
for(int i = a ; i <= b ; i ++)
f(i);
return 0;
}