最多约数问题
求区间a到b(正整数)之间约数个数最多的数,并输出他的约数。
约数是能整除x的正整数。
1 #include<stdio.h> 2 #include<stdafx.h> 3 #include<iostream> 4 #include<string> 5 using namespace std; 6 7 int div(int a) 8 { 9 int count,i,k; 10 count=0; 11 for(i=1;i<=a;i++){ 12 k=a%i; 13 if(k==0) 14 count++; 15 } 16 return count; 17 } 18 19 int main(){ 20 freopen("D://input.txt","r",stdin); 21 freopen("D://output.txt","w",stdout); 22 23 int a,b; 24 25 while(scanf("%d%d",&a,&b)==2){ 26 int i,temp,max=0; 27 for(i=a;i<=b;i++){ 28 temp=div(i); 29 if(temp>=max) 30 max=temp; 31 } 32 33 cout<<max<<endl; 34 } 35 36 return 0; 37 }
PS:
scanf("%d%d", &a, &b);
如果a和b都被成功读入,那么scanf的返回值就是2
如果只有a被成功读入,返回值为1
如果a和b都未被成功读入,返回值为0
如果遇到错误或遇到end of file,返回值为EOF。
此外写成2 == scanf()格式是一种编程风格~防止由于程序员手误写成"="