问题:找出整数 1 < n < 10^7 的个数,其中 n 和 n + 1 的正约数个数相同。例如,14 的正因子为 1、2、7、14,而 15 的正因子为 1、3、5、15。
我达不到 10^7,因为它对 C 和我来说太大了。我怎样才能用 C 解决这个问题?
#include<stdio.h>
#include<conio.h>
int divisorcount(int);
int main()
{
int number,divisornumber1,divisornumber2,j=0;
for(number=1;number<=100;number++){
divisornumber1=divisorcount(number);
divisornumber2=divisorcount(number-1);
if(divisornumber1==divisornumber2){
printf("%d and %d\n",number-1,number);
j++;
}
}
printf("\nThere is %d integers.",j);
getch();
}
int divisorcount(int num)
{
int i,divi=0;
for(i=1;i<=(num)/2;i++)
if(num%i==0)
divi++;
return divi;
}
最佳答案
作为如何在一分钟内解决问题的提示,您可以遍历从 2 到 10^7 的每个数字,遍历这些数字的所有倍数并递增 1(忽略 1,因为所有数字都是1) 的倍数。最后,您将获得数组中每个数字的约数(检查您的编译器是否支持 32 位索引)。只需使用最终的线性扫描即可计数。
关于c - 欧拉计划 #179,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12660546/