需要注意的地方:num1和num2的大小关系不确定。
View Code
#include " iostream " using namespace std; int v[ 10000 ]; void Init(){ int i,j; memset(v, 0 , sizeof (v)); for (i = 2 ; i < 10000 ; i ++ ) { int sum = 0 ; for (j = 1 ;j <= i / 2 ;j ++ ) { if (i % j == 0 ) sum += j; } if (sum == i) { v[i] = 1 ; } }} int main(){ int t,a,b; cin >> t; Init(); while (t -- ) { cin >> a >> b; int count = 0 ; if (a > b) { int temp = a; a = b; b = temp; } for ( int i = a;i <= b;i ++ ) { if (v[i] == 1 ) count ++ ; } cout << count << endl; } return 0 ;}