69,371
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
int main()
{
int num,i,flag=0;
printf("please enter num:");
scanf("%d",&num);
for(i=2;i <num;i++)
{
if(num%i==0)
{
flag=0;
break;
}
else
{
flag=1;
}
}
if(flag==0)
{
printf("%d不是素数\n",num);
}
else if(flag==1)
{
printf("%d是素数\n",num);
}
else
{
printf("输入数据有误");
}
system("pause");
return 0;
}
if(i > sqrt(num)) {
printf("%d是素数\n",num);
}
#include <stdio.h>
#include <math.h>
int main()
{
int num,i;
/* int flag = 1; */ /*设一个标志变量, 1为素数, 0为非素数*/
printf("please enter num:");
scanf("%d", &num);
for(i=2;i <=sqrt(num);i++) { /*这里大括号要英文半角输入*/ /*这里循环上界可以只到sqrt(num)就行了*/
if(num%i==0) {
/*flag = 0; *//*不是素数, 将标志置为0*/
break;
}
}
if(i > sqrt(num)) {
printf("%d是素数\n",num);
}
else {
printf("%d不是素数\n",num);
}
return 0;
}
for(i=2;i <=sqrt(num);i++) {/*这里循环上界可以只到sqrt(num)就行了*/
if(num%i==0) {
flag = 0; /*不是素数, 将标志置为0*/
break;
}
}
这里,标志变量的作用就是当num能被2-sqrt(num)中的某一个数字(假设为k, 2=<k<=sqrt(num))整除时,说明该num不是素数,k+1, k+2,..., sqrt(num)就不需要再进行整除了,直接跳出循环,在循环外通过标志变量来判断是不是素数。
#include <stdio.h>
int main()
{
int num,i,flag=0;
printf("please enter num:");
scanf("%d",&num);
for(i=2;i <num;i++)
{
if(num%i==0)
{
flag=0;
}
else
{
flag=1;
}
}
if(flag==0)
{
printf("%d不是素数\n",num);
}
else
{
printf("%d是素数\n",num);
}
system("pause");
return 0;
}
#include <stdio.h>
#include <math.h>
int main()
{
int num,i;
int flag = 1; /*设一个标志变量, 1为素数, 0为非素数*/
printf("please enter num:");
scanf("%d", &num);
for(i=2;i <=sqrt(num);i++) { /*这里大括号要英文半角输入*/ /*这里循环上界可以只到sqrt(num)就行了*/
if(num%i==0) {
flag = 0; /*不是素数, 将标志置为0*/
break;
}
}
if(flag) {
printf("%d是素数\n",num);
}
else {
printf("%d不是素数\n",num);
}
return 0;
}