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

一段判断合数的代码,请高手指点问题所在!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