首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一段判断合数的代码,请有关问题所在!Thanks:)

2012-02-23 
一段判断合数的代码,请高手指点问题所在!Thanks:)C/C++ code/*输入自然数n,求前n个合数(非素数),其因子仅

一段判断合数的代码,请高手指点问题所在!Thanks:)

C/C++ code
/*输入自然数n,求前n个合数(非素数),其因子仅有2,3,或5。*/#include<iostream>#include<stdio.h>#include<time.h>using namespace std;int main(){    freopen("input.txt","r",stdin);    freopen("output.txt","w",stdout);    int n,count=0;    bool ok=false,ok2=false;    cin>>n;    for(int i=1;i<=n;i++)    {        for(int j=1;j<=i;j++)        {            if(i%j==0)count++;//判断是否为合数setp1                //cout<<i<<" "<<j<<" "<<count<<endl;        }        if(count>2)//判断是否为合数setp2        {            ok2=true;            if((n%2==0)||(n%3==0)||(n%5==0))//素因子包含2、3或5                ok=true;            for(int n=1;n<=i;n++)            {                if((n!=i)&&(n!=1))                {                    if((n!=2)&&(n!=3)&&(n!=5))                   {                    if(i%n==0)ok=false;                   }                }                            }        }        if(ok&&ok2)        {            cout<<i<<" ";            cout<<count<<endl;        }        count=0;    }    printf("Time used=%.21f",(double)clock()/CLOCKS_PER_SEC);    return 0;}


输入:10
结果:
4 3
5 2 不知道为啥ok和ok2都true之后还输出了5,其因数只有2...下同。。
6 4
7 2
9 3
10 4
Time used=0.000000000000000000000


请高手指点迷津!

[解决办法]
以为你在循环的最后只是将count置为了0,没有将ok,和ok2置为false

热点排行