代码的主要逻辑是通过两层循环遍历数组a,对每个元素判断是否为质数(即只能被1和自身整除),如果是质数,则将其与后面的质数交换位置,以实现排序。
最后,通过循环遍历输出排序后的数组a。
#include<stdio.h>//需要引入的文件
//如解答错误,注意检查错误信息提示,对比预期输出和实际输出之间的差异
int main() {
int a[10]={108,4,19,7,23,66,49,13,33,35};
int i,j,m,A,N,t;
N=10;
for(i=0;i<10;i++) //从数组前面下标为0开始,判断每个数是否为素数
{
A=0;
for(j=2;j<a[i];j++)
{
if(a[i]%j==0)
break;
}
if(j>=a[i]) //如果检验到素数,再在循环里建立一个循环,下标从末尾9开始查找素数。
{
for(m=N-1;m>i;m--)//此处m > i,是因为当前面的i与后面的m遇见时说明已经检擦完了所以数,所以二者不能相遇。
{
for(j=2;j<a[m];j++)
{
if(a[m]%j==0)
break;
}
if(j>=a[m]) //找到末尾对应位置的素数后将前后素数交换。
{
t=a[i];
a[i]=a[m];
a[m]=t;
A=1; //交换后令A==1;创造退出循环的条件。
N=m;
}
if(A==1)//此处是为了从后面找到一个素数后就推出循环,因为不退出会一直查找素数。
break;
}
}
}
for(i=0;i<10;i++)//输出
{
printf("%d ",a[i]);
}
return 0;
}