![]() |
#2
rjsp2012-01-16 08:56
|

/*输入自然数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;
}
其因子仅有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
鄙人琢磨了几个小时。。。实在脑壳都炸了,请高手指点迷津!