一行判断合数的代码,请高手指点问题所在!Thanks:)
程序代码:
/*输入自然数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
鄙人琢磨了几个小时。。。实在脑壳都炸了,请高手指点迷津!