- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Write a program which reads in an integer k, and prints out the number of positive integers between 1 and 100000 (inclusive) which have exactly k divisors.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void){
int k=0, N=0, i=0, r=0, n_divisors=0, result=0;
printf("Enter the number of divisors: ");
/*scanning in an integer value*/
scanf(" %d",&k);
/*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 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*/
}
/* printing the value for no. of integers form 1 to 100000 with K no. of divisors*/
printf("There are %d numbers between 1 and 100000 inclusive which have exactly \n",result );
printf("%d divisors.",k);
return 0;
}
最佳答案
事情比你想象的更严重 - 你可能会得到奇怪的结果,不仅仅是增加 1。(参见:你通过添加 2
来计算除数的数量,因为所有数字都可以有只有偶数个除数。)
问题出在这个声明中:
for(i=1; i<sqrt(N); i++ ){
特别是在表达式中
i<sqrt(N)
其中排除 sqrt(N)
可能的除数。
但是对于整数的2次方的数字(如1
、4
、9
、16
, ...) 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//
}
关于c - 得到结果多 1,除数计数 程序 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40499037/
我遇到了一个问题,想要了解更多信息以及如何避免。我有这个代码 len :: (Num r ) => [a] -> r len [] = 0 len xs = 1 + len ( tail xs ) a
我知道如何找到给定整数(1 除外)的除数: let smallest_divisor n = let rec aux n i = if i 编辑添加:在平均情况下,第二种方法
这个问题已经有答案了: Why does integer division code give the wrong answer? [duplicate] (4 个回答) 已关闭去年。 在 Java
Welcome to Scala version 2.9.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_26). scala> 1.0 / Doub
我的数据帧结构如下,x_L 和 x_R 对的数量可能最多为 100。 ID Side A_L A_R B_L B_R 1 0 7 5 6 3 2
我的数据帧结构如下,x_L 和 x_R 对的数量可能最多为 100。 ID Side A_L A_R B_L B_R 1 0 7 5 6 3 2
如何使用转换将数字列表除以 2?我以为这段代码可以做到,但它只将整个列表的数字 1 除以 2,所以我一定完全误解了这一点。有人能帮助我吗? :) list v(5, 1); list d; d.res
我目前正在研究如何使用各种现代处理器的快速单精度浮点倒数功能来计算基于定点 Newton-Raphson 迭代的 64 位无符号整数除法的起始近似值。它需要尽可能准确地计算 264/除数,其中初始近似
我是一名优秀的程序员,十分优秀!