How can I find the multiplicity of a divisor N.
5 次查看(过去 30 天)
显示 更早的评论
So say N=8, and 8=2^3 how would I get this in Matlab?
0 个评论
采纳的回答
Guillaume
2015-12-18
编辑:Guillaume
2015-12-18
factor(8)
Possibly, your question is not clear.
2 个评论
the cyclist
2015-12-18
factorList = factor(100);
uniqueFactors = unique(factorList);
multiplicity = histcounts(factorList,[uniqueFactors Inf])
更多回答(2 个)
the cyclist
2015-12-18
log2(8)
Logs in base 2 and 10 are available natively. You can get arbitrary bases by using math.
John D'Errico
2015-12-18
编辑:John D'Errico
2015-12-18
Consider the number N = 8.
Divide N by 2, checking the remainder. The remainder is the non-integer, fractional part in thedivision. If N/2 is an integer, so the remainder is zero, then N is divisible by 2.
Repeat until the remainder is non-zero. So this is just a while loop. Count the number of successful divisions with a zero remainder. (This is a case where we can safely test for an exact zero value of the remainder.)
In the case of N = 8, we have 8/2 = 4. The remainder is zero. So now repeat, 4/2 = 2. Again, the remainder is 0. One more time, and we have 2/2 = 1. The remainder was once more zero.
On the final pass through the loop, we will see that 1/ 2 = 0.5. The remainder was non-zero. We went through the loop 4 times, failing on the 4th time. So the number 8 has exactly 3 factors of 2.
I'll give you a code fragment that embodies the basic idea, although you need to consider how this might need to change if you wish to count the number of factors of 3 a number contains, or some other prime.
CountFacs = 0;
r = 1;
while r ~= 0
N = N/2;
r = rem(N,1);
if r == 0
CountFacs = CountFacs + 1;
end
end
2 个评论
John D'Errico
2015-12-19
Think about it. Read the code. What did you want to compute? What is the value of CountFacs AFTER the code block terminates?
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!