1.
#include<stdio.h>
int main(void)
{
int i;
int val;
printf("请输入一个数,判断是否是素数\n");
scanf("%d",&val);
for(i=2;i<val;i++)
{
if(val%i==0)
break;
}
if ( i == val )
printf("yse\n");
else
printf("no\n");
return 0;
}
在vc6.0中运行的结果是
请输入一个数,判断是否是素数
121
no
Press any key to continue
要注意,这个for下面的break是退出for的循环,因为if是选择,break只会退出循环,而不是选择。
2.
下面使用函数判断是否为素数。
#include<stdio.h>
bool IsPrime(int val)
{
int i;
for(i=2;i<val;i++)
{
if(val%i==0)
break;
}
if(i==val)
return true;
else
return false;
}
int main(void)
{
int m;
int i;
scanf("%d",&m);
if (IsPrime(m))
printf("yes\n");
else
printf("no\n");
return 0;
}
在vc6.0中运行的结果是
122
no
Press any key to continue
——————————————————————————————
3.
求1-i之间的所有素数
#include<stdio.h>
int main(void)
{
int i;
int val;
int j;
scanf("%d",&val);
for(i=2;i<val;i++)
{
for(j=2;j<i;j++)
{
if( i%j == 0)
break;
}
if( j == i)
printf("%d\n ",j);
}
return 0;
}
在vc6.0中运行的结果是
121
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
101
103
107
109
113
Press any key to continue
————————————————
4.求1到i的素数(函数版)
#include<stdio.h>
bool IsPrime(int i)
{
int m;
for(m=2;m<i;m++)
{
if(i%m==0)
break;
}
if(i==m)
return true;
else
return false;
}
int main(void)
{
int i;
int val;
scanf("%d",&val);
for(i=2;i<val;i++)
{
if (IsPrime(i))
printf("%d\n",i);
}
return 0;
}
在vc6.0中运行的结果是
#include<stdio.h>
bool IsPrime(int i)
{
int m;
for(m=2;m<i;m++)
{
if(i%m==0)
break;
}
if(i==m)
return true;
else
return false;
}
int main(void)
{
int i;
int val;
scanf("%d",&val);
for(i=2;i<val;i++)
{
if (IsPrime(i))
printf("%d\n",i);
}
return 0;
}
————————————————————
还是不方便,因为要求1到100,可以,但是要求1到1000,1到10000又得关闭程序,在打开程序,重新输入,很麻烦。(其实我感觉好像和上面的没什么区别)
升级版2.0
#include<stdio.h>
bool IsPrime(int i)
{
int m;
for(m=2;m<i;m++)
{
if(i%m==0)
break;
}
if(i==m)
return true;
else
return false;
}void TraverseVal( int n)
{
int i;
for(i=2;i<n;i++)
{
if(IsPrime(i))
printf("%d\n",i);
}
}
int main(void)
{
int val;
int i;
scanf("%d",&val);
TraverseVal(val);
return 0;
}
在vc6.0中运行的结果是
120
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
101
103
107
109
113
Press any key to continue