最多约数问题:正整数x的约数是能整除x的正整数。正整数x的约数的个数记为div(x)。例如,1,2,5,10都是10的约数,div(10)=4。设a≤b是两个正整数,找出a和b之间约数个数最多的数x。
设正整数x的质因子分解为 ,则 。 算法:搜索区间[a,b]中数的质因子分解: [br][/br] void primes(){ //产生质数。 [br][/br] bool get[MAXP+1]; [br][/br] for(i=2;i[=MAXP;i++) get[i]=true;
=1) [br][/br] if(tot>max || tot=max &&num [br][/br] max=tot; numb=num; [br][/br] } [br][/br] if(low==up && low>num) search(from, tot*2, numb*low, 1, 1); [br][/br] for(i=from; i[=PCOUNT;i++)
up) return; [br][/br] elese { [br][/br] int j=prim[i], x=low-1, y=up, n=num, t=tot, m=1; [br][/br] while(true){ [br][/br] m++; t+=tot; x/=j; y/=j; [br][/br] if(x==y) break; [br][/br] n*=j; [br][/br] search(i+1, t, n, x+1, y); [br][/br] } //while [br][/br] m=1 m; i [br][/br] f(tot [br][/br] } //else [br][/br] } [br][/br] int main(){ [br][/br] primes(); [br][/br] cin>>low>>up; [br][/br] if(low==1 && up==1) {max=1;numb=1;} [br][/br] else{ max=2; numb=low; search(1,1,1,low,up); [br][/br] cout max endl; [br][/br] return 0; }[/i][/i][/i][/i][/i]
=1) [br][/br] if(tot>max || tot=max &&num [br][/br] max=tot; numb=num; [br][/br] } [br][/br] if(low==up && low>num) search(from, tot*2, numb*low, 1, 1); [br][/br] for(i=from; i[=PCOUNT;i++)
up) return; [br][/br] elese { [br][/br] int j=prim[i], x=low-1, y=up, n=num, t=tot, m=1; [br][/br] while(true){ [br][/br] m++; t+=tot; x/=j; y/=j; [br][/br] if(x==y) break; [br][/br] n*=j; [br][/br] search(i+1, t, n, x+1, y); [br][/br] } //while [br][/br] m=1 m; i [br][/br] f(tot [br][/br] } //else [br][/br] } [br][/br] int main(){ [br][/br] primes(); [br][/br] cin>>low>>up; [br][/br] if(low==1 && up==1) {max=1;numb=1;} [br][/br] else{ max=2; numb=low; search(1,1,1,low,up); [br][/br] cout max endl; [br][/br] return 0; }[/i][/i][/i][/i][/i]
举一反三
- 求不同约数 对用户输入的两个正整数,求这两个正整数的所有不同约数。例如,正整数6的约数有1、2、3、6,正整数8的约数有1、2、4、8,正整数6和8的不同约数为3、4、6、8
- 设计一个算法,判断正整数m是否是正整数n的约数.
- 输入一个整数,寻找并输出该整数的最大真约数
- 一个数有3个约数,另一个数有4个约数,问这两个数的积最多有几个约数 A: 4个 B: 6个 C: 12个 D: 16个
- 【单选题】我们探究得方程 x + y = 2 的正整数解只有 1 组,方程 x + y = 3 的正整数解只有 2 组,方程 x + y = 4 的正整数解只有 3 组,......,那么方程 x + y + z = 10 的正整数解得组数是() A. 34 B. 35 C. 36 D. 37
内容
- 0
当整数n>2时,关于x,y,z的不定方程x^n+y^n=z^n.无正整数解?
- 1
自然数、正整数和整数这三个数概念中,()的范围最大。 A: 自然数 B: 正整数 C: 整数
- 2
360具有的正约数的个数是
- 3
对于等价类{x|1 ≤ x ≤ 10}来说,x的无效等价类是 A: 1≤ x ≤ 10 B: x<1或x>10 C: x<2或x>100 D: x属于整数
- 4
x是一个三位正整数数,下列哪个是能求出其十位数字 A: int(x/100) B: int((x-int(x/100)*100)/10) C: int(x/10) D: x