最大质因子序列
题目描述
任意输入两个正整数 m , n m,n m,n( 2 ≤ m ≤ n ≤ 5000 2\le m\le n\le5000 2≤m≤n≤5000),依次输出 m m m 到 n n n 之间每个数的最大质因子(包括 m m m 和 n n n;如果某个数本身是质数,则输出这个数自身)。
输入格式
一行,包含两个正整数 m m m 和 n n n,其间以单个空格间隔。
输出格式
一行,每个整数的最大质因子,以逗号间隔。
样例 #1
样例输入 #1
5 10
样例输出 #1
5,3,7,2,3,5
#include<stdio.h>//旺旺的碎冰冰~
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<stdbool.h>//布尔类型的头文件,切记不不可忘
bool num[10001];
//最大质因子序列
int main(){
int x,y,max;
num[1]=1;
int i,j;
for(i=2;i<=1000;i++){
for(j=2;j*i<=10001;j++){
num[i*j]=1;
}
}//先对质因子进行打表
scanf("%d%d",&x,&y);
for(i=x;i<=y;i++){
max=0;//max用来求最大的质因子
if(num[i]==0){
max=i;
}//如果该数本身就是质数,可以直接输出
else{
for(j=2;j<=i/2;j++){
if(i%j==0&&num[j]==0){
if(j>max){
max=j;
}
}
}
}//求i以内的最大质因子
if(i==x){
printf("%d",max);
}
else{
printf(",%d",max);
}//if else用来固定输入格式
}
return 0;//CSDN:旺旺的碎冰冰~
}