| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 697 人关注过本帖
标题:求教C++素数与对称的问题
只看楼主 加入收藏
zfan85
Rank: 1
等 级:新手上路
帖 子:25
专家分:8
注 册:2010-8-30
结帖率:66.67%
收藏
已结贴  问题点数:0 回复次数:5 
求教C++素数与对称的问题
大家好,小弟是初学C++,遇到判断100~999中即是素数又是对称数(就是正反又是一样的,比如121倒过来还是121)的问题。
下面的程序得出的结果就是一致输出1,不知道为什么?
#include<iostream>
#include<cmath>
using namespace std;
main(){
    int a,b;
    for(int i=100;i<=999;i++){
        b=i;
        for(int j=2;j<=sqrt(i);j++)
            if(i%j==0) break;
            if(j>sqrt(i)){
            a=0;
            while(i>0){
                a=i%10+a*10;
                i/=10;}
            if(b==a)
                cout<<b<<"\n";}}


}
搜索更多相关主题的帖子: 素数 
2010-08-30 01:37
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:6 
            if(j>sqrt(i))
            {
                a=i%100;
                if( b%10 == a )
                    cout<<b<<"\n";
            }
2010-08-30 08:49
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
#include<iostream>
#include<cmath>
using namespace std;

int main()
{
    int a;
    for(int i=100;i<=999;i++)
    {
        for(int j=2;j<=sqrt(i);j++)
            if(i%j==0)
                break;
        if( j>sqrt(i) )
        {
            a=i/100;
            if( i%10 == a )
                cout<<i<<"\n";
        }
    }
    return 0;
}
2010-08-30 08:54
zfan85
Rank: 1
等 级:新手上路
帖 子:25
专家分:8
注 册:2010-8-30
收藏
得分:0 
谢谢  不过能解释一下我的为什么不可以啊?  
2010-08-30 12:33
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:6 
看看这个可以吗?
程序代码:
#include<iostream>
#include<cmath>
using namespace std;

int main()
{
    int a(100);
    bool result(false);
    while(a<1000){
        for(int i=2;i<sqrt(a);i++)
            if(a%i==0)
            {
                result=true;
                break;
            }
        if(result==true)
        {
            int m,n;
            m=a%10;
            n=a/100;
            if(m!=n)
                result=false;
               
        }
        if(result==true)
            cout<<a<<endl;
        a++;
        result=false;
       
    }

    return 0;

}

 

南国利剑
2010-08-30 13:57
ragnaros
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:15
专家分:105
注 册:2010-7-26
收藏
得分:6 
程序代码:
#include<iostream>
#include<cmath>
using namespace std;
main()
{
    int a,b;
    for(int i=100; i<=999; i++)
    {
        b=i;
        for(int j=2; j<=sqrt(i); j++)
            if(i%j==0) break;
            if(j>sqrt(i))
            {
                a=0;
                while(i>0)
                {
                    a=i%10+a*10;
                    i/=10;
                }
                //system("pause");
                if(b==a)
                    cout<<b<<"\n";
            }
        i=b; //这里i的值改回来,i的值在while循环之后等于0,也满足for(int i=100; i<=999; i++)这个要求,所以每次while循环完i=0.i++之后i=1

} 
i=1的时候满足你的程序对素数和对称数的判断,因此在第一次循环输出101后,下面一直循环输出1。
因此只要把i的值改回循环之前的值即可。
2010-08-30 19:45
快速回复:求教C++素数与对称的问题
数据加载中...
 
   



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

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