读书人

新人求教请大家看一个编程。该如何处

发布时间: 2012-05-27 05:42:30 作者: rapoo

新人求教,请大家看一个编程。
题目是:编程输出3到10000内的可逆素数。可逆素数是指:一个素数,将其各位数字的顺序倒过来构成的反序数也是素数。如157和751均为素数,它们是可逆素数。
我编程如下,但系统提示有错,请各位指导一下吧,不甚感激!

#include<stdio.h>
int x[]()
void main()
{
int m,n,k,t,f,r;
for(m=0;m<10;m++)
for(n=0;m<10;n++)
for(k=0;k<10;k++)
for(t=0;t<10;t++)
{
for(f=0;f<=j;f++)
if(1000*m+100*n+10*k+t==x[f])
for(r=0;r<=j;r++)if(1000*t+100*k+10*n+m==x[r])
printf("3到10000之间的可逆素数有%d和%d\t",x[f],x[r]);
}
return;
}
int x[](static int j)
{
int i,a,j=0;
for(a=3;a<=10000;a++)
{
for(i=2;i<a;i++)if(a%i==0)break;
if(i>=a) {x[j]=a; j++ }
}
return x[j];
}

[解决办法]

C/C++ code
//判断n相对f进制是否可逆bool fun(const int n, const int f) {    int i = n;    int m = 0;    while (i) {        m = m*f + i%f;        i /= f;    }    return m == n;}
[解决办法]
代码如下,就是就是有很多重复的组合。希望能帮到你。



# include <stdio.h>

int Isprime(int );
void Agaprime(int);


int main(void)
{
//zs 是正素数
int i,zs;
for (i=3; i<=10000; i++)
{
zs = Isprime(i);
if(zs)
Agaprime(zs);
}

printf("\n");

return 0;
}

int Isprime(int m)
{
int i;
for (i=2; i<=m-1; i++)
{
if (m%i == 0)
break;
}
if (i>m-1)
return i;
else
return 0;
}

void Agaprime(int i)
{
int z, sum;
z = i;
sum = 0;

while (z)
{
sum = sum*10 + z%10;;
z = z/10;
}

if (Isprime(sum))
printf("%d 和 %d 逆素数\n", i , sum);

}

[解决办法]
要学会把问题分解。
C/C++ code
# include <stdio.h># include <string.h>int is_prime(int n){    int i;    for (i = 2; i < n; i++)        if (!(n % i))            return 0;    return 1;}int reverse(int n){    char buffer[BUFSIZ];    int i, x = 0;    snprintf(buffer, BUFSIZ, "%d", n);    i = strlen(buffer);    while (i)    {        x *= 10;        x += buffer[--i] - '0';    }    return x;}int main(){    int i;    for (i = 3; i <= 10000; i++)    {        if (is_prime(i))        {            int j = reverse(i);            if (is_prime(j))            {                if (j >= i)                    printf("%d %d\n", i, j);            }        }    }    return 0;} 

读书人网 >C语言

热点推荐