新写的麻烦看看有什么不足
本帖最后由 风之残月 于 2014-11-10 10:18 编辑#include <stdio.h>
#include <math.h>
void main()
{
int n,i;
double m;
printf("plese input a numble\n");
scanf("%lf",&m);
if(m>1,m==(int)m)
{
n=sqrt(m);
for(i=2;i<=n;i++)
if(0==(int)m%i)
break;
if(i>n)
{
printf("The numble is prime\n",m);
}
else
{
printf("The numble is not prime\n",m);
}
}
else
{
if(m==1||m==0)
{
printf("The numble is not prime\n",m);
}
else
{
printf("Please start from the new input error\n",m);
}
}
}
本帖最后由 zhoushilei 于 2014-7-16 13:28 编辑
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int main()
{
int inputNumber,temp,flag;//inputNumber是输入的素数,temp是用来判断素数用的,flag是判断中是不是素数标志
vector <int> prime;//用来存放素数的向量表
//从5开始判断到9999的素数
for(int i=5;i<10000;i+=2)
{
temp=2;
flag=0;
while(temp<=(int)sqrt(i))
{
if(i%temp==0)
{
flag=1;
break;
}
temp++;
}
if(flag==0)
prime.push_back(i);
}
int isPrime=0;//用来判断是不是素数的标志
while(true)
{
cout<<"请输入你要判断的数,小于10000!"<<endl;
cin>>inputNumber;
if(inputNumber<=0||inputNumber>=10000)
cout<<"输入错误,请重新输入!"<<endl;
else if(inputNumber==1)
cout<<"既不是素数也不是合数!"<<endl;
else if(inputNumber==2||inputNumber==3)
cout<<"是素数!"<<endl;
else if(inputNumber==4)
cout<<"是合数!"<<endl;
else
{
//遍历向量表,若其中有,便是素数,否则为合数
for(int j=0;j<prime.size();j++)
{
//cout<<prime<<endl;
if(inputNumber==prime)
{
isPrime=1;
break;
}
}
//cout<<isPrime<<" "<<endl;
if(isPrime==1)
cout<<"是素数!"<<endl;
else
cout<<"是合数!"<<endl;
isPrime=0;
}
}
return 0;
}
计算效率是O(N2)
我写了一个你看看吧
#include <stdio.h>
#include<math.h>
void close();
int main ()
{
int n,i;
s: printf("Please Input a number:");
if(scanf("%d",&n))
{
if(n == 1)
{
printf("1既不是素数也不是和数!\n");
close;
goto s;
}
else if(n == 2)
{
printf("%d是素数!\n",n);
close;
goto s;
}
else if(n%2==0)
{
printf("%d是和数!\n",n);
close;
goto s;
}
else
{
for(i=3;i<=sqrt
(n);i=i+2)
{
if(n%i==0)
{
break;
}
}
if(i<=sqrt(n))
{
printf("%d是和数!\n",n);
close;
goto s;
}
else
{
printf("%d是素数!\n",n);
close;
goto s;
}
}
}
return 0;
}
void close()
{
char ch;
while((ch = getchar())!='\n');
} 我这样效率稍微高点 牡丹,我看了你的代码,感觉你很喜欢用goto。可是我感觉尽量不要用这个,当别人看你的代码时,感觉很晕啊跳来跳去。这是我的个人之见。 流行语 发表于 2014-7-16 08:53
牡丹,我看了你的代码,感觉你很喜欢用goto。可是我感觉尽量不要用这个,当别人看你的代码时,感觉很晕啊跳 ...
哦哦 这个个人习惯问题这个也可以不用goto 用while也是可以的
但是 个人感觉goto好理解 牡丹花下死做鬼 发表于 2014-7-16 10:13
哦哦 这个个人习惯问题这个也可以不用goto 用while也是可以的
但是 个人感觉goto好理解
这个属于个人习惯,不过不建议使用goto.现在程序还小,等以后程序很大时,你就会体会到了。 流行语 发表于 2014-7-16 10:50
这个属于个人习惯,不过不建议使用goto.现在程序还小,等以后程序很大时,你就会体会到了。
这个我知道 一般goto我只是用在循环输入而已
其他都不会用
应为循环输入确实是goto好用 牡丹花下死做鬼 发表于 2014-7-16 10:51
这个我知道 一般goto我只是用在循环输入而已
其他都不会用
应为循环输入确实是goto好用
你现在这么早就接触编程,前途无量啊! 牡丹花下死做鬼 发表于 2014-7-16 10:51
这个我知道 一般goto我只是用在循环输入而已
其他都不会用
应为循环输入确实是goto好用
嗯嗯! 牡丹兄这么早接触编程! 确实前途无量! 要想效率高,还是要打表,这种现算的有什么高效率可言。而且不要用goto,尽量用循环,这个goto是C语言里面的禁忌。
页:
[1]