| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 402 人关注过本帖
标题:求大大给我纠错
只看楼主 加入收藏
c564794923
Rank: 2
等 级:论坛游民
帖 子:64
专家分:95
注 册:2011-5-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
求大大给我纠错
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
main()
{
      int palind(char str[],int k,int i);
      int prime(char str[],int ip);
      int i=0,n=0,m=0;
      char str[20],ch;
      printf("please input a number:\n");
      for(;(ch=getchar())!='\n';i++)
      str[i]=ch;
      if(i%2==0)
      n=palind(str,i/2,i-1);
      else
      n=palind(str,i/2-1,i-1);
      if(n==0)
      printf("not palindrome\n");
      else
      m=prime(str,i);
      if(m==0)
      printf("not prime number");
      else
      printf("is palindrome and prime number");
      system("pause");
      }

int palind(char str[],int k,int i)
    {
          if(str[k]==str[i-k]&&k==0)
          return 1;
          else if(str[k]==str[i-k])
          palind(str,k-1,i);
          else
          return 0;
          }
         
int prime(char str[],int ip)
    {
          int j,k,p=1,sum=str[0];
          for(k=1;k<ip;k++)
          {
          p*=10;
          sum=sum+str[k]*p;
          }
          printf("%d",sum);
          for(j=2;j<=sqrt(sum);j++)
          if(sum%j==0)
          return 0;
          if(j>sqrt(sum))
          return 1;
          }

prime函数怎么错了,求解释
2011-05-25 11:17
ppfly
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:297
专家分:1956
注 册:2009-5-17
收藏
得分:0 
你想表达的是这个意思吧
sum=str[0]-'0';
……
sum=sum+(str[k]-'0')*p;

********多贴代码,少说空话*******
2011-05-25 11:44
c564794923
Rank: 2
等 级:论坛游民
帖 子:64
专家分:95
注 册:2011-5-25
收藏
得分:0 
回复 2楼 ppfly
饿... 不懂你的意思
2011-05-25 12:10
c564794923
Rank: 2
等 级:论坛游民
帖 子:64
专家分:95
注 册:2011-5-25
收藏
得分:0 
这是回文素数问题,求素数prime部分哪错了
2011-05-25 12:45
Toomj
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:257
专家分:1826
注 册:2011-5-17
收藏
得分:20 
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
int main()
{
      int palind(int str[],int k,int i);
      int prime(int str[],int ip);
      int i=0,n=0,m=0;
      int str[20];
      char ch;
      printf("please input a number:\n");
      for(;(ch=getchar())!='\n';i++)
      str[i]=ch-'0';   //你要的是数不是字符
      if(i%2==0)
      n=palind(str,i/2,i-1);
      else
      n=palind(str,i/2-1,i-1);
      if(n==0)
      printf("not palindrome\n");
      else printf("is palindrome\n");
      m=prime(str,i);
      if(m==0)
      printf("not prime number\n");
      else
      printf("is prime number\n");
      system("pause");
      return 0;
      }

int palind(int str[],int k,int i)
    {
          if(str[k]==str[i-k]&&k==0)
          return 1;
          else if(str[k]==str[i-k])
          palind(str,k-1,i);
          else
          return 0;
          }
         
int prime(int str[],int ip)
    {
          int j,k,p=1,sum=0;
          for(k=ip-1;k>=0;k--)   //注意顺序
          {
          sum=sum+str[k]*p;
          p*=10;
          }
          printf("%d",sum);
          for(j=2;j<=sqrt(sum);j++)
          {if(sum%j==0)
          return 0;}
          //if(j>sqrt(sum))
          return 1;
          }
2011-05-25 12:59
lianjiecuowu
Rank: 3Rank: 3
来 自:安徽
等 级:论坛游侠
帖 子:152
专家分:107
注 册:2011-5-20
收藏
得分:0 
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    int i,j,s,n,k;
    cout<<"2"<<"  ";
    for(i=3;i<10000;i+=2)
    {
       n=int(sqrt(i));
       for(j=3;j<=n;j+=2)//判断i是否是素数
       if(i%j==0)break;//i不是素数
       if(j<=n)continue;
       n=i;
       s=0;
       while(n)
       {
          s=s*10+n%10;
          n/=10;
       }
       if(s==i)cout<<i<<"  ";
    }
   
    system("pause");
    return 0;
}
这是回文素数的判断,你可以参考下啊。嘿嘿

Sharp your mind!
2011-05-25 13:32
baobaoisme
Rank: 7Rank: 7Rank: 7
来 自:AVATAR
等 级:黑侠
帖 子:260
专家分:506
注 册:2010-7-9
收藏
得分:0 
~~~~~~~~~~~~~~~~`
2011-05-25 13:47
c564794923
Rank: 2
等 级:论坛游民
帖 子:64
专家分:95
注 册:2011-5-25
收藏
得分:0 


   继续研究下
2011-05-25 18:04
c564794923
Rank: 2
等 级:论坛游民
帖 子:64
专家分:95
注 册:2011-5-25
收藏
得分:0 
以下是引用Toomj在2011-5-25 12:59:49的发言:

#include "stdio.h"
#include "stdlib.h"
#include "math.h"
int main()
{
      int palind(int str[],int k,int i);
      int prime(int str[],int ip);
      int i=0,n=0,m=0;
      int str[20];
      char ch;
      printf("please input a number:\n");
      for(;(ch=getchar())!='\n';i++)
      str=ch-'0';   //你要的是数不是字符
      if(i%2==0)
      n=palind(str,i/2,i-1);
      else
      n=palind(str,i/2-1,i-1);
      if(n==0)
      printf("not palindrome\n");
--->  else printf("is palindrome\n");
      m=prime(str,i);
      if(m==0)
      printf("not prime number\n");
      else
      printf("is prime number\n");
      system("pause");
--->  return 0;
      }

int palind(int str[],int k,int i)
    {
          if(str[k]==str&&k==0)
          return 1;
          else if(str[k]==str)
          palind(str,k-1,i);
          else
          return 0;
          }
         
int prime(int str[],int ip)
    {
          int j,k,p=1,sum=0;
          for(k=ip-1;k>=0;k--)   //注意顺序
          {
          sum=sum+str[k]*p;
          p*=10;
          }
          printf("%d",sum);
          for(j=2;j<=sqrt(sum);j++)
          {if(sum%j==0)
--->      return 0;}
          //if(j>sqrt(sum))
--->      return 1;
          }
...
else
      {
      m=prime(str,i);
      if(m==0)
      printf("not prime number\n");
      else
      printf("is palindrome and prime number\n");
      system("pause");
      return 0;
      }
...
以上运行上有什么不同???
为什么运行结果完全不一样?


还有
...最后如果return 0了,不是应该运行到return 1吗?不就重复了吗?
为什么结果却是对的,求解释!!!
2011-05-25 19:48
快速回复:求大大给我纠错
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048886 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved