连续因子
程序员文章站
2023-02-14 23:16:40
题目: 思路:连续因子的范围一定是从1到sqrt(N),因为如果有一个数超过sqrt(N)了,那么无论它与前一个数还是后一个数相乘都会大于N。所以在1到sqrt(N)中暴力找出能被N整除的连续相乘的数串即可。如果N是质数,要另作考虑,输出的结果就是1和N。 上代码: 疑问:虽然这么做能AC,但是我不 ......
题目:
思路:连续因子的范围一定是从1到sqrt(n),因为如果有一个数超过sqrt(n)了,那么无论它与前一个数还是后一个数相乘都会大于n。所以在1到sqrt(n)中暴力找出能被n整除的连续相乘的数串即可。如果n是质数,要另作考虑,输出的结果就是1和n。
上代码:
import java.util.*; public class main { public static void main(string[] args) { // todo auto-generated method stub scanner sc=new scanner(system.in); int n=sc.nextint(); int maxn=(int) math.sqrt(n); int i,j,len = 0,first=0; for(i=2;i<=maxn;i++) { int x=1;//因数 for(j=i;j<=maxn;j++) { x *= j; if(n%x!=0) break; } if(j-i>len){ len=j-i; first=i; } } if(len==0) { system.out.println("1"); system.out.print(n); } else{ system.out.println(len); for(i=0;i<len-1;i++) { system.out.print(first+i+"*"); } system.out.print(first+len-1); } } }
疑问:虽然这么做能ac,但是我不太知道为什么要写n%x!=0,难道判断他是否能被整除不应该是n%x==0吗?还有为什么len是 j-i 而不是 j-i+1?想了半天还是不明白。。。
上一篇: 妇好:为国家打下一半领土,最后却难产而死