输入一个正整数n,再输入n个正整数,判断他们是否为素数。 我是c语言初学者, 不知下面算法错在何处?

作者&投稿:翠雪 (若有异议请与网页底部的电邮联系)
输入一个正整数n, 再输入n个正整数,判断它们是否为素数.素数就是只能被1和自身整除的正整数~

你好
很高兴为你解答

答案是:你的程序结构错了,for循环是用来判断一个数是否为素数,你却在for循环中不断的读入数,而且这里n是输入的数的个数,n/2是什么意思呢,一半的数? 你这里,一个n充当了多个用途。
所以你应该用双重循环,读取一个数,再用for判断这个数是否为素数;如此继续,直到n个数读完。

满意请采纳,谢谢

网上抄的代码,但是看了一下,思想还是对的,循环用比自身小的数来做除。

#include
void main()
{
int i,n;
printf("请输入n:");
scanf("%d",&n);
i=2;
while(i<n)
{
if(n%i==0)
break;
i++;
}
if(i==n)
printf("%d is prime
",n);
else
printf("%d is no prime
",n);

}

#include<stdio.h>
int main(void)
{
int i,n,num,j;
printf("Enter n:");
scanf("%d",&n);
printf("Enter %d numbers:",n);
for(i=1;i<=n;i++)
{
scanf("%d",&num);
for(j=2;j<=num/2;j++)
if(num%j==0)
break;
if(j>num/2)
printf("%5.0d",num);
}
return 0;
}

你的i用重复了

哪里错了啊?可以运行的啊 结果也对

#include<stdio.h>
int main(void)
{
int i,n,j,num;//这里的j
printf("Enter n:\n");
scanf("%d",&n);
printf("Enter %d numbers:\n",n);
for(i=1;i<=n;i++)
{
scanf("%d",&num);
for(j=2;j <= num/2; j++)
{//这里
if(num%j==0)
break;
}

if(j>num/2)//这里
printf("%d\n",num);
}
return 0;
}


跪求大神,c语言问题。编程,输入1个正整数n(1<n<=10),再输入n个整数,按...
right]为排序范围{int i;int maxnum;do{maxnum=left;for(i=left+1;i<=right;i++){if(fabs(T[i])<fabs(T[maxnum])) maxnum = i;}if(i!=maxnum) Exchange(&T[left],&T[maxnum]);}while(left++<right);}void main() {int n,i,*p;do{printf("输入整数个数(1~10):"...

C语言:输入一个小于100的正整数n,然后输入n个整数存入一维数组中,对...
这个程序的写法是比较标准而简单的,先输入一个整数n,然后使用一个循环输入n个整数到一维数组当中,在使用一个简单的排序方法,比方说冒泡排序就可以对数组进行从大到小的排序,最后输出就可以了.include <stdio.h> void bubble_sort(int a[], int n){ int i, j, t;for (i = 0; i < n...

c语言编程 输入一个正整数n(1<n《10),再输入n个整数,将最小值与第一个...
这题目应该找到最大值和最小值所在的坐标位置,然后,在交换时,要考虑最大值是第一个数的情况。include<stdio.h>int main(){ int a[10]; int i,max,min,n; printf("请输入一个正整数n(1<n<10)\\n"); scanf("%d",&n); printf("请输入n个正整数\\n"); for(i=...

输入一个正整数n(1 <n≤10),再输入n 个整数,将最小值与第一个数交换...
那个你交换了最小值之后,最大值的位置发生了变化。所以要先找最小值,交换最小值之后再去查找最大值,再交换最大值。

输入一个正整数n,再输入n个整数,最小值与第一个数交换,最大值与最后...
Console.WriteLine("请输入正整数");fistNum = Console.ReadLine();} } fistN = int.Parse(fistNum);allN = new int[fistN];for (int i = 0; i < fistN; i++){ string num;Console.WriteLine("请输入第"+(i+1)+"个数");num = Console.ReadLine();while (true){ if (Regex....

从键盘输入一个正整数存入变量n中,再输入n个值不同的整数,然后求出其中...
include <stdio.h> main(){ int n,i,s,t;printf("Please input n: ");scanf("%d",&n);printf("Please input number:\\n");int a[n];for(i=0; i<n; i++)scanf("%d",&a[i]);s=a[0];t=a[0];for(i=0; i<n; i++)if(s<a[i])s=a[i];for(i=0; i<n; i++...

输入一个正整数 n (1<n<=10),再输入 n 个整数,将它们从大到小排序后输 ...
include <stdlib.h> include <iostream> using namespace std;int A[10];int cmp(const void * a , const void * b){ return *(int*) a - *(int*)b;} int main(){ int n;cin >> n;for (int i = 0; i < n; i++)cin >> A[i];\/\/ qsort(A , n , sizeof(int)...

输入一个正整数n(1 <n≤10),再输入n 个整数,将最小值与第一个数交换...
在你的两个 if 语句内改成 max = max + a[i];a[i] = max - a[i];max = max - a[i];如果担心两数和超出范围可以用^异或操作 改成 max = max ^ a[i];a[i] = a[i] ^ max;max = max ^ a[i];这样就不用担心两整数的和超出表示范围了。下面的min的操作也与以上内容类似...

C语言编程题
输出:5.950 include <stdio.h> void main(){ int n,a=1,b=4,c;float s=(float)1\/4;scanf("%d",&n);while(--n){ c=a+b;a=b;b=c;s+=(float)a\/b;} printf("%.3f\\n",s);} 编程题,不要输出与结果无关的字符。读入1 个正整数 n(n<=10),再读入n个整数并放入一个...

c++:输入正整数n,再输入n行字符串,每行之间有一个空行,这个功能如何...
include<iostream> using namespace std;int main(){ int n;cin>>n;for(int i=0;i<n;i++){ char a[100];do{gets(a);}while(a[0]=='\\0');cout<<endl;} return 0;}

常熟市15024585789: 输入一个正整数n,再输入n个整数,将最小值与第一个数交换,最大值与最后一个数交换,再输出交换后的n个数这是我写的java程序,可以帮忙看看错在哪... -
安汤风湿:[答案] 太不规范了吧.看着头晕. for(i=0;i

常熟市15024585789: 判断素数输入一个正整数n,再输入n个正整数,判断它们是否为素数.我只会一个的,不知道怎么再在这个里面循环.求教:#include#includeint main(void){int i,... -
安汤风湿:[答案] #include int main() { int n,a[20],i,j; printf("输入需要判断的个数:\n"); scanf("%d",&n); printf("输入这些数:\n"); for(i=0;i

常熟市15024585789: C语言:输入一个正整数n,再输入n个正整数,判断它们是否为素数. -
安汤风湿: 使用了数组的动态分配,看不懂的话我还有其他方案 #include <stdio.h> #include <stdlib.h> bool prime(int num) { bool flag=true; if(num<2) flag=false; else { for(int i=2;i<num;i++) { if(num%i==0) { flag=false; break; } } } return flag; } int main() { int c; int ...

常熟市15024585789: 输入一个正整数n, 再输入n个正整数,判断它们是否为素数.素数就是只能被1和自身整除的正整数 -
安汤风湿: #include<stdio.h> int main(void) {int n, i, m;printf("输入正整数n: ");scanf("%d", &n);printf("输入%d个正整数: \n", n);while (scanf("%d", &m)){for (i = 2; i <= m / 2; i++){if (m%i == 0)break;}if (i > m / 2 && m != 1)printf("%d is shushu \n", m);elseprintf("%d is not shushu \n", m); }return 0; }

常熟市15024585789: 编程,输入一个正整数n,再输入n个整数,输出其中的最大值输入的每个数都在100 - 200之间,如果某 -
安汤风湿: dim a,b,c c=""'赋予c空值 a=inputbox("n?")'输入N For a=0 to n-1b=inputbox("?")'询问 b=int(b)'将b转化为整数 If b>99 or b<201 then'如果b的范围在100~200 If c<>"" then'如果c不为空 If c>b then c=c'如果c大于b就不变 Elseif c<b then c=b'如果b大于c则选最大数 End if else c=b'如果c为空则变成b End if End if Next Msgbox c '2014年5月于厕所

常熟市15024585789: 编程题,输入正整数的个数n,再输入n个正整数,判断它们是否为素数.素数就是只能被1和自身整除的正整数
安汤风湿: i没有初值,也没有变化.加个for循环就行了. printf("输入%d个正整数:\n",n); for(i=0;i&lt;n;i++) scanf("%d",&amp;a[i]);

常熟市15024585789: c语言,求最小值:输入一个正整数n,再输入n个整数 -
安汤风湿: #include int main(){ int n, minv, a; scanf("%d", &n); scanf("%d", &minv); n--; while (n--){ scanf("%d", &a); if (a} printf("%d\n", minv); return 0; }

常熟市15024585789: C语言,输入一个整数n再输入n个整数,输出其中所有偶数 -
安汤风湿: #includevoid main() {int n,i,t;int m[100]; //定义了一个长度100的数组,来放这n个数,不过这样一来也变相的限制了n要小于100.可根据实际情况定义数组的大小.printf("请输入一个正整数个数:");scanf("%d",&n);printf("请输入%d个正整数:",n);for(i=0;i (m[n])) m[n]=m[i];}printf("其中最大的数为:%d\n",m[n]); }

常熟市15024585789: c语言输入一个正整数n ,再输入n个正整数,求n个整数之和与7 的倍数的奇数平均值,救我 -
安汤风湿: #include <stdio.h> int main(int argc,char *argv[]){int n,sum,sum7,x,t;printf("Input n(int n>0)...\nn=");if(scanf("%d",&n)!=1 || n<1){printf("Input error, exit...\n");return 0;}for(sum=sum7=t=0;n;n--){if(scanf("%d",&x)!=1 || x<1){printf("...

常熟市15024585789: 输入: 首先输入一个正整数n. 然后输入n个整数. 输出 输出对n个整数从小到大排序的结果. 求大神赐教 -
安汤风湿: 相关的函数为: void DirecInsSort(int* a, int n) // direct insert sorting { int i, k;for (i=1; i<n; i++){ // 请在此添加代码,补全函数DirecInsSort/********** Begin *********/int t;for(t=a[i],j=i-1;j>1 && a[j]>t;j--)a[j+1]=a[j];a[j+1]=t;/********** End **********/} }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网