给你一个正整数N,有多少组正整数(A,B,C)解满足A*B+C=N?

给你一个正整数N,有多少组正整数(A,B,C)解满足A*B+C=N?

转换一下思路,就是对于每个N-C(C从0到N-1),计算从1到N-C的开根号之间,有多少个可整除的正整数

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7505215
  • 你也可以参考下这篇文章:求正整数a,b之间的完全数
  • 除此之外, 这篇博客: 求正整数a,b之间的完全数中的 求正整数a,b之间的完全数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 完全数的定义:完全数是指把它所有的因为加起来等于他本身的数字
    例如:6是一个完全数,6=1+2+3

    分析:显然,一个完全数肯定是一个偶数。假设m是一个完全数,只需要在m/2的范围内查询他是不是一个完全数可以大大减少程序的运算次数!

    //求a-b之间的所有完全数
    #include<stdio.h>
    int main()
    {
    	int a,b,cnt,sum;
    	printf("请输入您要查询完全数的下限(一个正整数):\n");
    	scanf("%d",&a);
    	printf("请输入您要查询完全数的上限(一个正整数):\n");
    	scanf("%d",&b);	
    	//big loop
    	while(a<b)
    	{
    		sum=0;
    		for(cnt=1;cnt<=a/2;cnt++)
    		{
    			if(a%cnt==0)
    			{
    				sum+=cnt;
    			}
    		} 
    		if(sum==a)
    		{
    			printf("%d\t",a);
    		}
    		a++;
    	}
    	return 0;
    }