不知道咋思考,C程序应该用什么循环结构做还是啥的,感觉我只会判断是否是素数,不会这个45的素数有两个啊!有特殊的数有两个不会搞
#include <stdio.h>
int isprime(int n)
{
for(int i=2;i*i<=n;i++)
if(n%i==0)
return 0;
return 1;
}
int main()
{
int n;
int d = 1;
int left=0,right=0;
scanf("%d",&n);
for(int i=n;d<n-2;d++){
if(isprime(i-d) == 1){
left = i-d;
}
if(isprime(i+d) == 1){
right = i+d;
}
if(left && right){
printf("%d %d",left,right);
break;
}else if(left){
printf("%d",left);
break;
}else if(right){
printf("%d",right);
break;
}
}
}
用while循环
#include <stdio.h>
int isprime(int n)
{
for(int i=2;i*i<=n;i++)
if(n%i==0)
return 0;
return 1;
}
int main()
{
int n;
scanf("%d",&n);
while(1)
{
if(isprime(n) == 1)
break;
n++;
}
printf("%d",n);
}
#include<stdio.h>
#define N 5 //决定比较数的数量
int main()
{
int bubblesort1(int a[]);
int bubblesort2(int a[]);
int a[N], i;
printf("please input 5 digits:");
for(i = 0; i < N; i++) scanf("%d", &a[i]);
bubblesort1(a);
bubblesort2(a);
return 0;
}
int bubblesort1(int a[]){//递增
int i, j, temp;
for(i= N-1; i >= 1; i--)
for(j = 0;j <= i-1; j++)
if(a[j] > a[j+1]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
printf("\nthe sorted numbers:");
for(i = 0; i < N; i++) printf("%d ", a[i]);
printf("\n\n");
}
int bubblesort2(int a[]){//递减
int i, j, temp;
for(i= N-1; i >= 1; i--)
for(j = 0;j <= i-1; j++)
if(a[j] < a[j+1]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
printf("\nthe sorted numbers:");
for(i = 0; i < N; i++) printf("%d ", a[i]);
printf("\n\n");
}
以递增的冒泡排序法来分析:
数组长度:5
外层循环i : [4, 1]
,减
内存循环j : [0, i)
,增
当 i 为 4 时,内层循环中的条件交换,将最大值像冒泡泡一样(j:从下标小处向下标大处),冒到下标最大的位置
当 i 为 3 时,将第二大值像冒泡泡一样,冒到下标第二大的位置
依此类推
#include<stdio.h>
int s(int a)//定义一个方法求是否是素数
{
int i;
for(i=2;i<a;i++)
{
if(a%i==0)
break;
}
if(i==a)
return a;
else
return 0;
}
int main()
{
int x,y,x1,x2,i=0,j=0;
scanf("%d",&x);
y=x;
while(1)
{
x--;
if(s(x)!=0)
break;
i++;
}
x1=s(x);
while(1)
{
y++;
if(s(y)!=0)
break;
j++;
}
x2=s(y);
if(i<j)
printf("%d",x1);
if(i>j)
printf("%d",x2);
if(i==j)
printf("%d,%d",x1,x2);
}