matlab 欧拉计划 35
程序员文章站
2022-03-31 20:46:28
...
problem 35
The number, 197, is called a circular prime because all rotations of the digits: 197, 971, and 719, are themselves prime.
There are thirteen such primes below 100: 2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73, 79, and 97.
How many circular primes are there below one million?
思路
1.要求:找到1000000以内所有的循环质数(即本身及由其循环所得数都为质数),求出这些数的个数;
2.这道题重点应该在循环数这里:一个由n为数字组成的数,(按一个方向循环),可以循环(n-1)次。判断一个数字是否为循环质数,只要判断该数字组成的n个数字(本身+n-1个循环数)都为质数即可。
程序
clc;clear all;
z=[];
for i=1:1e6
x=num2str(i);
h=1;
y=str2num(x);
if isprime(y)
for j=1:length(x)-1
t=x(1);
x(1:end-1)=x(2:end);
x(end)=t;
y=str2num(x);
if isprime(y)
h=h+1;
end
end
if h==length(x)
z=[z,i];
end
end
end
下一篇: matlab 欧拉计划 34