获取结果1更多,除数计数程序-C
编写一个程序,读入一个整数k,然后打印出1到100000(含)之间的正整数的数目,这些整数正好有k个除数获取结果1更多,除数计数程序-C,c,C,编写一个程序,读入一个整数k,然后打印出1到100000(含)之间的正整数的数目,这些整数正好有k个除数 #包括 #包括 #包括 内部主(空){ int k=0,N=0,i=0,r=0,N_因子=0,结果=0; printf(“输入除数:”); /*扫描整数值*/ scanf(“%d”和“&k”); /*循环以计算从1到100000的整数中的除数数*/ 对于(N=1;N一旦删除注释,它对我来说就可以了,因为它们会引起一些问题 已清理代码 #include <stdio.h> #inc
#包括
#包括
#包括
内部主(空){
int k=0,N=0,i=0,r=0,N_因子=0,结果=0;
printf(“输入除数:”);
/*扫描整数值*/
scanf(“%d”和“&k”);
/*循环以计算从1到100000的整数中的除数数*/
对于(N=1;N一旦删除注释,它对我来说就可以了,因为它们会引起一些问题
已清理代码
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void){
int k=0, i=0, n_divisors=0, result=0;
double N=0, r=0;
printf("Enter the number of divisors: ");
scanf(" %d",&k);
for(N=1; N<=100000; N++){
n_divisors=0;
for(i=1; i<sqrt(N); i++ ){
r=fmod(N, i);
if( r==0)
n_divisors+=2;
}
if(n_divisors==k)
result++;
}
printf("There are %d numbers between 1 and 100000 inclusive which have exactly\n",result);
printf("%d divisors.",k);
return 0;
}
#包括
#包括
#包括
内部主(空){
int k=0,i=0,n_因子=0,结果=0;
双N=0,r=0;
printf(“输入除数:”);
scanf(“%d”和“&k”);
对于(N=1;N,它比你想象的更严重——你可能会得到奇怪的结果,不仅是增加了1。(请参阅:你可以通过添加2
来计算除数,因为所有数字都只能有偶数除数。)
问题在于这句话:
for(i=1; i<sqrt(N); i++ ){
因此,代码的一部分将看起来像(我添加了正确的缩进)
//循环以计算从1到100000的整数中的除数数量
对于(N=1;在C中查找奇怪的注释(>comment/
)。我的编译器不喜欢它。很抱歉评论,正确的答案应该是result=10728。@Omar给出了确切的输入?当k=16,result=10728,范围为1到100000谢谢你的反馈,我觉得这对一系列值来说是很严重的,但不确定它们在哪里。
for(i=1; i<sqrt(N); i++ ){
i<sqrt(N)
if (i * i == N)
n_divisors++;
// loop to count the no. of divisors in an integer from 1 to 100000
for(N=1; N<=100000; N++){
n_divisors=0;
// loop for incrementing the no. divisors in an integer by 2
for(i=1; i<sqrt(N); i++ ){
// Testing if i is a divisor of the integer.
r=(N%i);
if( r==0)
n_divisors+=2;
}
if (i * i == N)
n_divisors++;
// If the no. of divisors is equal to k, then increment result//
if(n_divisors==k)
result++;
// else reset the value of no. of divisors to 0//
}