1410:最大质因子序列【题目描述】任意输入两个正整数m,n(1<m<n≤5000),依次输出m到n之间每个数的最大质因子(包括m和n; 如果某个数本身是质数,则输出这个数自身)。 【输入】一行,包含两个正整数m和n,其间以单个空格间隔。 【输出】一行,每个整数的最大质因子,以逗号间隔。 【输入样例】5 10 【输出样例】5,3,7,2,3,5 第一种:判断剩下一个的那几个数,先看是素数吗,不是然后除比那个数小1的数(或再小的),如果k是素数,就 输出来,跳出 #include<iostream> #include<cmath> #include<cstring> int a[100001]; int mxx(int y)//是素数吗 { for(int i=2;i<y;i++) if(y%i==0)return 0; return 1; } using namespace std; int main() { int m,n,i=0,j=0,k=0,sum; scanf("%d %d",&m,&n); for(i=m;i<n;i++) { if(mxx(i)) printf("%d,",i); else { for(int k=i-1;k>=2;k--) {if(i%k==0) if(mxx(k)) { printf("%d,",k); break; } } } } if(mxx(n))//为了那个逗号,又弄了一遍代码 printf("%d",n); else { for(int k=n-1;k>=2;k--) {if(n%k==0) if(mxx(k)) { printf("%d",k); break; } } } return 0; } 第二种:每个循环加了个不加逗号的条件。 #include<iostream> #include<cmath> #include<cstring> int a[100001]; int mxx(int y) { for(int i=2;i<y;i++) if(y%i==0)return 0; return 1; } using namespace std; int main() { int m,n,i=0,j=0,k=0,sum; scanf("%d %d",&m,&n); for(i=m;i<=n;i++) { if(mxx(i)){ if(i==n)//不加逗号的条件 printf("%d",i); else printf("%d,",i);} else { for(int k=i-1;k>=2;k--) if(i%k==0) if(mxx(k)) { if(i==n) { printf("%d",k); break;} else { printf("%d,",k); break;} } } } return 0; } |
03-22
377
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交