素数问题。求大佬帮下
我自己写了一下但是什么都输出不了。。1193是个素数,对它循环移位后发现:
1931,9311,3119也都是素数,这样特征的数叫:循环素数。
你能找出具有这样特征的5位数的循环素数吗?
当然,这样的数字可能有很多,请写出其中最大的一个。
注意:答案是个5位数,不要填写任何多余的内容。
#include<stdio.h>
int main()
{
#include<stdio.h>
int main()
{
int i,y,temp,temp1,j,c,sum,max;
int a;
for(i=10000;i<100000;i++){
c=0;
for(j=0;j<i;j++){
if(i%j==0){
for(c=0;c<5;c++){
temp1=i;
y=i%10;
if(y=0){
break;
}
temp=i/10;
i=y*10000+temp;
for(sum=2;sum<i;sum++){
if(i%sum!=0){
c=6;
}
}
}
if(c=5){
for(int m=0;m<300;m++){
if(a=NULL){
a=i;
break;
}
}
}
}
}
}
for(int m=0;m<300;m++){
if(max<a){
max=a;
}
}
printf("%d",max);
return 0;
} #include <math.h>
#include <stdio.h>
int IsPrime(int n)
{
int i = 0;
for(i=2 ; i < sqrt(n) ; i++)
{
if(n % i == 0)
{
return 0;
}
}
return 1;
}
int IsCirclePrime(int n)
{
int i = 0;
int temp = 0;
int max = n;
int num = n;
for(i=0 ; i<5 ; i++)
{
if(!IsPrime(num))
{
return 0;
}
max = max > num ? max : num;
temp = num / 10000;
num = (num % 10000) * 10 + temp;
}
return max;
}
int main()
{
int i;
int max = 0;
int num = 0;
for(i=10001; i<99999 ; i++)
{
num = IsCirclePrime(i);
max = max > num ? max : num;
}
printf("%d\n",max);
return 0;
}
def prime(x):
if x%2==0 or x%3==0:
return False
else:
for i in range(5,int(x**0.5) +1):
if x%i == 0:
return False
return True
def dh(x):
ls = []
for i in range(len(str(x))):
a = str(x)+str(x)[:i]
a = int(a)
ls.append(a)
return ls
lst = []
for i in range(10000,99999):
if prime(i):
if all(prime(j)==True for j in dh(i)):
lst.append(i)
print(lst,max(lst))
#include <stdio.h>
#include <math.h>
int isprime(int n);
int move(int n);
int main()
{
int i,j,max;
max=0;
int m;
int flag1,flag2,flag3,flag4,flag5;
for(i=10000;i<=99999;i++)
{
flag1=flag2=flag3=flag4=flag5=0;
if(isprime(i))
{
flag1=1;
}
m=move(i);
//printf("%d\n",m);
if(isprime(m))
{
flag2=1;
}
m=move(m);
if(isprime(m))
{
flag3=1;
}
m=move(m);
if(isprime(m))
{
flag4=1;
}
m=move(m);
if(isprime(m))
{
flag5=1;
}
if(flag1&&flag2&&flag3&&flag4&&flag5)
{
if(i>max)
{
max=i;
}
}
}
printf("%d",max);
}
int isprime(int n)
{
int flag=1;
int i;
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0)
{
flag=0;
}
}
return flag;
}
int move(int n)
{
int m,i,s;
s=n;
i=0;
while(s!=0)
{
s/=10;
i++;
}
//printf("i=%d\n",i);
m=(n-(int)(n/pow(10,i-1))*pow(10,i-1))*10+(int)n/pow(10,i-1);
return m;
}
页:
[1]